广告
返回顶部
首页 > 资讯 > 数据库 >【Redis】集群NetCore实战
  • 488
分享到

【Redis】集群NetCore实战

【Redis】集群NetCore实战 2017-02-19 13:02:33 488人浏览 无得
摘要

介绍netcore如何使用Redis集群 环境准备  Redis集群(windows集群搭建) 启动Redis集群,给每个节点加上Title start "Redis - 6379" /min re

【Redis】集群NetCore实战

介绍netcore如何使用Redis集群

环境准备

 Redis集群(windows集群搭建)

启动Redis集群,给每个节点加上Title

start "Redis - 6379" /min redis-server.exe redis.6379.conf
start "Redis - 6380" /min redis-server.exe redis.6380.conf
start "Redis - 6381" /min redis-server.exe redis.6381.conf
start "Redis - 6382" /min redis-server.exe redis.6382.conf
start "Redis - 6383" /min redis-server.exe redis.6383.conf
start "Redis - 6384" /min redis-server.exe redis.6384.conf

安装StackExchange.Redis包

dotnet add package StackExchange.Redis

 

连接Redis

var configString = "127.0.0.1:6379";
var options = ConfigurationOptions.Parse(configString);
options.ReconnectRetryPolicy = new ExponentialRetry(5000);
var client = ConnectionMultiplexer.Connect(options);

这里只需要提供一个节点就能访问整个集群

ConnectionMultiplexer 连接Redis可以使用ConfigurationOptions,或者直接字符串初始化(里面实现也是调用ConfigurationOptions.Parse转换)

这里要说一下是他的重连重试机制,在第一次创建连接的时候,StackExchange.Redis会创建一个心跳检测

internal static IDisposable Create(ConnectionMultiplexer connection)
{
    var token = new TimerToken(connection);
    var timer = new Timer(Heartbeat, token, MillisecondsPerHeartbeat, MillisecondsPerHeartbeat);
    token.SetTimer(timer);
    return timer;
}

使用System.Threading.Timer每秒钟检查一次。

StackExchange.Redis 实现两种重试策略,当然我们也可以实现自己的重现策略,实现IReconnectRetryPolicy接口

  •  ExponentialRetry(指数)

   根据指定时间,根据重试次数不断增大随机数范围

  • LinearRetry(线性)

   根据指定时间固定时间间隔重试

常用数据结构操作

字符串(String)操作

 

static void RedisStrinGoperation(ConnectionMultiplexer client)
{
    var db = client.GetDatabase();

    //单个Key操作
    db.StringSet("Key", "Wilson");
    Console.WriteLine($"Get Key : {db.StringGet("Key")}");

    db.StringSet("Nums", 1);
    db.StringIncrement("Nums");
    Console.WriteLine($"Get Nums : {db.StringGet("Nums")}");

    db.StringDecrement("Nums");
    Console.WriteLine($"Get Nums : {db.StringGet("Nums")}");

    //多个Key操作
    db.StringSet(new KeyValuePair[]
    {
        new KeyValuePair("{user}Name","Wilson"),
        new KeyValuePair("{user}Age",30)
    });

    foreach (var value in db.StringGet(new RedisKey[] { "{user}Name", "{user}Age" }))
    {
        Console.WriteLine($"{value}");
    }
}

 

哈希(Hash)操作

 

static void RedisHashOperation(ConnectionMultiplexer client)
{
    var db = client.GetDatabase();

    db.HashSet("person", "name", "Wilson");
    Console.WriteLine(db.HashGet("person", "name"));

    db.HashSet("person", new HashEntry[]
    {
        new HashEntry("name","Wilson"),
        new HashEntry("sex",1)
    });
    Console.WriteLine(string.Join("
", db.HashGet("person", new RedisValue[] { "name", "sex" })));

    Console.WriteLine(string.Join("
", db.HashGetAll("person")));
}

 

列表(List) 操作

 

static void RedisListOperation(ConnectionMultiplexer client)
{
    var db = client.GetDatabase();

    db.ListLeftPush("list", 100);
    db.ListLeftPush("list", 200);
    db.ListLeftPush("list", 300);
    db.ListRightPush("list", 400);
    db.ListRightPush("list", 500);

    Console.WriteLine(db.ListLeftPop("list"));
    Console.WriteLine(db.ListRightPop("list"));
    Console.WriteLine(string.Join("	", db.ListRange("list", 0, 2)));
    Console.WriteLine(db.ListLength("list"));
}

 

集合(Set)

 

static void RedisSetOperation(ConnectionMultiplexer client)
{
    var db = client.GetDatabase();

    db.SetAdd("user", "Wilson");
    db.SetAdd("user", "Wilson");
    db.SetAdd("user", "Alice");

    Console.WriteLine(db.SetLength("user"));
    Console.WriteLine(db.SetPop("user"));
    Console.WriteLine(string.Join("
", db.SetMembers("user")));
}

 

有序集合(Sorted Set)

 

static void RedisSortedSetOperation(ConnectionMultiplexer client)
{
    var db = client.GetDatabase();

    db.KeyDelete("user");

    db.SortedSetAdd("user", "Wilson", 90);
    db.SortedSetAdd("user", "Alice", 85);
    db.SortedSetAdd("user", "Trenary", 12);
    db.SortedSetAdd("user", "Nixon", 30);

    Console.WriteLine(db.SortedSetLength("user"));
    Console.WriteLine(db.SortedSetRemove("user", "Wilson"));
    Console.WriteLine(string.Join("
", db.SortedSetRangeByRank("user", 0, 2)));
}

 

转发请标明出处:https://www.cnblogs.com/WilsonPan/p/12677478.html

示例代码: Https://GitHub.com/WilsonPan/Net.Demos/tree/master/Demo.RedisCluster

参考文章

StackExchange.Redis | General purpose redis client

您可能感兴趣的文档:

--结束END--

本文标题: 【Redis】集群NetCore实战

本文链接: https://www.lsjlt.com/news/5450.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Redis】集群NetCore实战
    介绍NetCore如何使用Redis集群 环境准备  Redis集群(Windows集群搭建) 启动Redis集群,给每个节点加上Title start "Redis - 6379" /min re...
    99+
    2017-02-19
    【Redis】集群NetCore实战
  • Redis集群实战
                       Redis基础到集群实战笔记   &n...
    99+
    2022-10-18
  • Docker中redis集群部署实战
    目录环境准备安装gcc-c++查看版本创建Redis网卡创建6个redis服务在/var目录下创建脚本文件create_redis_script.sh编写脚本内容查看脚本文件赋予create_redis_script.s...
    99+
    2022-11-27
    Docker中redis集群部署 docker搭建redis集群 docker安装redis集群
  • .NetCore服务治理Consul搭建集群
    延续上一篇的话题继续,顺便放上一篇的传送门:点这里。 集群的必要性 consul本身就是管理集群的,现在还需要给consul搞个集群,这是为啥?因为consul单点也容易挂啊!万一管...
    99+
    2022-11-12
  • redis集群
    Redis集群基本介绍Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation。Redis 集群不支持那些需要同时处理多个键的...
    99+
    2022-10-18
  • Redis5.x 集群部署实战
    实验环境主机名IP地址Redis端口划分备注node171172.20.20.17116001,16002node172172.20.20.17216001,16002node173172.20.20.17...
    99+
    2022-10-18
  • redis如何实现集群
    这篇文章给大家分享的是有关redis如何实现集群的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。1.主从复制主从复制原理:从服务器连接主服务器,发送SYNC命令;主服务器接收到SY...
    99+
    2022-10-18
  • Redis集群(Cluster)
    Redis集群 集群解决的问题代理主机和无中心化集群Redis集群的特点Redis集群环境搭建slots(插槽)在集群中录入值查询集群中的值故障恢复Redis集群的优缺点 集群解决的问...
    99+
    2023-08-31
    redis 数据库 服务器
  • 实战Mariadb galera Cluster集群架构
    Mariadb galera Cluster安装:操作系统:Centos7.4版本集群数量:3个节点主机信息: 192.168.153.142 node1 selinux=disabled fire...
    99+
    2022-10-18
  • Google Kubernetes Engine 集群实战详解
    目录GKE 集群介绍K8s 带来的好处使用 GKE 编排集群GKE 集群介绍 Google Kubernetes Engine (GKE) 集群由 Kubernetes 开源集群管理...
    99+
    2022-11-13
  • Redis 哨兵集群的实现
    目录1、Sentinel 哨兵2、Redis 主从分离一、配置Master二、配置Slave  1、在配置文件中配置从服务  2、在服务启动后设置  3、总结3、Sentinel 哨...
    99+
    2022-11-12
  • Redis分片集群的实现
    目录1 搭建分片集群1.1 集群结构1.2 准备实例和配置1.3 启动1.4 创建集群1.5 测试2 散列插槽3 集群伸缩3.1 创建节点并添加到集群3.2 转移插槽4 故障转移4....
    99+
    2023-01-30
    Redis 分片集群 Redis 分片
  • Redis 分片集群的实现
    目录1 搭建分片集群1.1 集群结构1.2 准备实例和配置1.3 启动1.4 创建集群1.5 测试2 散列插槽3 集群伸缩3.1 创建节点并添加到集群3.2 转移插槽4 故障转移4.1.自动故障转移4.2 手动故障转移5...
    99+
    2023-01-30
    Redis分片集群 Redis分片
  • redis集群操作
    Redis集群 1 集群2 集群架构图3 集群细节4 集群搭建4.1.创建集群4.2.查看集群状态4.3.添加主节点4.4.添加从节点4.5.删除副本节点4.6.集群在线分片 ...
    99+
    2023-09-15
    redis 数据库 java
  • Redis集群模式
    1、常见的三种数据的集群存储模式 full-mirror:全量镜像模式,单纯备份模式,各个节点数据相同,都包含了全量数据,仅主节点可写,保证了数据冗余和读的负载均衡。数据安全性高,横向扩展能力差,资源利用率不高。 pure-sh...
    99+
    2016-08-18
    Redis集群模式
  • redis集群搭建
    Redis 5.0之后版本的高可用集群搭建 Redis系统介绍: Redis的基础介绍与安装使用步骤:https://www.jianshu.com/p/2a23257af57b Redis的基础数据结构与使用:https...
    99+
    2019-03-23
    redis集群搭建
  • redis集群安装
    本文 redis版本3.2.9介绍 IP 端口 角色 127.0.0.1 7000 Master 127.0.0.1 7001 Master 127.0.0.1 7002 Maste...
    99+
    2022-10-18
  • Redis 哨兵集群
    哨兵集群介绍Redis的哨兵(sentinel) 常用于管理多个 Redis 服务器,它主要会执行以下三个任务:        监控(M...
    99+
    2022-10-18
  • redis 3.0 cluster 集群
    周氏一族,整理技术文档,给下一代留点教程......redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400 本篇,是在 "redis 3.0 clu...
    99+
    2023-01-31
    集群 redis cluster
  • 【Redis】用python操作redis集群
    https://blog.csdn.net/bitcarmanlee/article/details/51852126  密码不能写到列表中去: 有密...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作