欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis主从复制+哨兵简单配置

程序员文章站 2022-08-08 13:53:58
项目中考虑到容灾、性能以及容量,一般会使用集群方式搭建redis。而当redis主服务器存在故障,为了redis仍能正常运行,可以搭建redis哨兵,通过选举方式重新建立主从关系。本文简单讲述主从建立和哨兵的配置。本机测试redis为Redis-x64-3.2.100(Windows下载地址:htt ......

  项目中考虑到容灾、性能以及容量,一般会使用集群方式搭建redis。而当redis主服务器存在故障,为了redis仍能正常运行,可以搭建redis哨兵,通过选举方式重新建立主从关系。本文简单讲述主从建立和哨兵的配置。本机测试redis为redis-x64-3.2.100(windows下载地址:https://github.com/microsoftarchive/redis/releases),使用一台机器运行测试。

1.1 下载解压

  下载完成后进行解压,然后复制两份作为从成员,构成一主二从。

Redis主从复制+哨兵简单配置

 

 

 1.2 主从配置

  主redis配置:编辑文件夹下redis.windows.conf文件,设置bind和port,因为我是本机测试,默认设置bind 127.0.0.1,port  6379

Redis主从复制+哨兵简单配置

 

 

 Redis主从复制+哨兵简单配置

 

  从redis配置:同样编辑文件夹下redis.windows.conf文件,设置bind和port。由于我是一台机器设置两个从redis,所以bind都是127.0.0.1,port分别是6380和6381。做完以上操作,如何标志这两redis是从关系呢?所以,还需要在配置文件中加上一行配置。注意:两个从redis都是相同的配置语句,因为都从属于同一个主redis。

slaveof 127.0.0.1 6379

 1.3 主从redis启动

  在文件加中使用cmd进入命令窗口,输入redis-server redis.windows.conf即可启动(redis-server.exe和redis.windows.conf文件在相同文件夹下),依次启动主和从redis。

redis-server redis.windows.conf

 Redis主从复制+哨兵简单配置

 

 

 

Redis主从复制+哨兵简单配置

 

 

 2.1 哨兵配置

  在三个redis文件加中创建redis.windows.sentinel.conf文件,设置绑定的port为26379、26380和26381,设置哨兵监视的主服务器(注意:3个哨兵都只配置监视的主redis的ip和端口,也就是127.0.0.1:6379这一个,不是分别写其所在redis的ip和端口)

 

 

 

 

哨兵1配置

#哨兵1端口
port 26379
#mymaster 即命名的主redis,后续客户端连接哨兵的时候将会使用,
#主服务器ip:127.0.0.1 端口  6379
##2表示在sentinel集群中最少需要有两个节点检测到redis主节点出故障就进行主从切换 
sentinel monitor mymaster 127.0.0.1 6379 2   

哨兵2配置

#哨兵2端口
port 26380
#mymaster 即命名的主redis,后续客户端连接哨兵的时候将会使用,
#主服务器ip:127.0.0.1 端口  6379
##2表示在sentinel集群中最少需要有两个节点检测到redis主节点出故障就进行主从切换 
sentinel monitor mymaster 127.0.0.1 6379 2   

 哨兵3配置

#哨兵3端口
port 26381
#mymaster 即命名的主redis,后续客户端连接哨兵的时候将会使用,
#主服务器ip:127.0.0.1 端口  6379
##2表示在sentinel集群中最少需要有两个节点检测到redis主节点出故障就进行主从切换 
sentinel monitor mymaster 127.0.0.1 6379 2    

 

 2.2 启动哨兵

  在文件加中使用cmd进入命令窗口,输入redis-server redis.windows.sentinel.conf --sentinel即可启动(redis-server.exe和redis.windows.sentinel.conf文件在相同文件夹下),依次启动3个哨兵。

redis-server redis.windows.sentinel.conf --sentine

Redis主从复制+哨兵简单配置

  启动后会显示从成员和主成员

 

 

 Redis主从复制+哨兵简单配置

 

 

3 测试功能

  将主redis关闭,可发现哨兵会重新选举主服务器,然后继续保持主从关系,重新启动关闭的redis,该redis将变成从成员。

Redis主从复制+哨兵简单配置

 

 

4 代码连接redis

  在.net core环境下,使用Redis主从复制+哨兵简单配置进行连接测试,采用哨兵的连接方式。

 

 

class program
    {
        static void main(string[] args)
        {
            var csredis = new csredis.csredisclient("mymaster", new string[] { "127.0.0.1:26379", "127.0.0.1:26380", "127.0.0.1:26381" });
            redishelper.initialization(csredis);
            while (true)
            {
                try
                {
                    redishelper.set("time", datetime.now.tostring("yyyy-mm-dd hh:mm:ss"));//设置值。默认永不过期
                    console.writeline(redishelper.get<string>("time"));
                    system.threading.thread.sleep(1000);
                }
                catch(exception e)
                {
                    console.writeline(e.message);
                }
                


            }
        }
    }