我们都知道redis是内存数据库,数据都存储在内存当中,当redis服务宕机了,就没有可用的服务了,请求数据就会失败,所以我们需要搭建多个服务(集群),当单个服务崩溃后,其他服务选择一个替代死掉的服务,继续工作。提高程序的稳定性。废话不多说了。
将压缩包解压然后复制,总共3份,我们搭建1主2从模式,redis6379(主),redis6479(从),redis6579(从)
主redis配置,进入redis6379目录中,配置 redis.windows.conf
#配置IP绑定 bind 0.0.0.0 #配置端口 port 6379 #是否保护模式 protected-mode no
目录下加个run.bat文件,便于双击启动服务
redis-server redis.windows.conf
从Redis配置,分别进入redis6479和redis6579目录,配置redis.windows.conf,并添加run.bat文件
#配置IP绑定 bind 0.0.0.0 #配置端口 port 6479 #是否保护模式 protected-mode no #配置主redisd的IP和端口 replicaof 127.0.0.1 6579
现在Redis配置好了,运行3个Redis目录中的run.bat启动服务,运行后可以看到主从都成功连接。
搭建哨兵
实际使用中一般会使用多个哨兵进行监控,本文作了简化,只使用1个哨兵,多个哨兵都是相同的配置,仅区分端口。
将Redis目录复制一份命名为RedisSentinel,添加sentinel.conf文件,内容如下:
#哨兵运行IP和端口 bind 127.0.0.1 port 27000 #非保护模式运行 protected-mode no #监控的主Redis的IP和端口,1表示1个哨兵 sentinel monitor redis-master 127.0.0.1 6379 1 #主机掉线以后5s进行认证,如果无法连接则重新由哨兵从slave中选出新的master sentinel down-after-milliseconds redis-master 5000 sentinel failover-timeout redis-master 60000
cmd通过命令运行哨兵 :
redis-server sentinel.conf --sentinel
启动成功
也可通过命令查看哨兵状态
redis-cli -p 27000 info sentinel
创建控制台应用程序,
static void Main(string[] args) { //var csredis = "127.0.0.1:27000,password=123456,defaultDatabase=1,prefix="; //连接哨兵,并初始化 RedisHelper.Initialization(new CSRedis.CSRedisClient("redis-master",new string[] { "127.0.0.1:27000"})); while (true) { Test(); } Console.ReadKey(); } static void Test() { try { // 列表 //删除指定key的列表 RedisHelper.Del("list"); RedisHelper.RPush("list", "第一个元素"); RedisHelper.RPush("list", "第二个元素"); Console.WriteLine($"list的长度为{RedisHelper.LLen("list")}"); Console.WriteLine($"list的第二个元素为{RedisHelper.LIndex("list", 1)}"); Thread.Sleep(1000); } catch (Exception ex) { Console.WriteLine("error:"+ex.Message); } }
执行结果:
这样一个简易的redis集群搭建完成