【windows】同一redis服务器,不同端口下实现主从复制【绕坑,亲测有效】

【windows】同一redis服务器,不同端口下实现主从复制【绕坑,亲测有效】

1.主从复制的作用

  1. 数据冗余
  2. 故障恢复
  3. 负载均衡
  4. 高可用基石

2.具体实现

本次采用简单的实现方式,但先需要配置redis环境变量

在这里插入图片描述

  1. 测试redis是否可以启动
    打开redis安装目录,选择redis-server.exe,查看是否可以启动
    在这里插入图片描述
    启动成功
  2. 复制配置文件redis.windows.conf或者redis.conf
    ①在安装目录下查看是否包含配置文件redis.windows.conf或者redis.conf(两个都是一样的,只不过名称不一样,是因为安装的redis版本或者其他的不同)
    ②复制两份,分别改名为redis.windows-service80.conf、redis.windows-service81.conf
    在这里插入图片描述
  3. 修改上面两份配置文件中的内容
    把下面内容复制并覆盖到redis.windows-service80.conf
    (同理,对于另外的配置文件redis.windows-service81.conf,只需把配置文件中的6380改为6381即可)
#redis的配置
#Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize yes
#当Redis以守护进程方式运行时,Redis默认会把pid写入redis.pid文件,可以通过pidfile指定
pidfile 'D:/Software/Redis-x64-3.2.100/redis6380.pid'
#端口
port 6380
#绑定主机的ip地址
bind 127.0.0.1
#当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 300
#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice
#日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
logfile stdout
#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 16
#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改
save 900 1
save 300 10
save 60 10000
#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
#指定本地数据库文件名,默认值为dump.rdb
dbfilename dump6380.rdb
#指定本地数据库存放目录
dir ./
#设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
#slaveof 127.0.0.1 6379
#当master服务设置了密码保护时,slav服务连接master的密码
#masterauth 123456
#设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
#requirepass foobared
#设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
maxclients 10000
#指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
maxmemory 300m
#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly yes
#指定更新日志文件名,默认为appendonly.aof
appendfilename 'appendonly6380.aof'
#指定更新日志条件,共有3个可选值
#no:表示等操作系统进行数据缓存同步到磁盘(快) 
#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
#everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec
  1. 编写bat文件
    在安装目录下新建一个reids-server80.bat和文件reids-server81.bat(双击可快速启动服务)
    在这里插入图片描述
    编写内容如下
redis-server redis.windows-service80.conf
redis-server redis.windows-service81.conf

在这里插入图片描述
在这里插入图片描述
5. 启动服务
①首先启动redis-server.exe服务器
在这里插入图片描述
②分别启动三个端口6379、6380、6381
打开三个命令行
在这里插入图片描述
分别输入

redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381

端口启动
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
6. 编写主从复制实例
把6379端口当作主机,6380、6381端口当作从机。

①在6380、6381命令行中分别输入:slaveof 127.0.0.1 6379
目的是为了把80和81设置成79的从机在这里插入图片描述
②从机只能读,主机只能写
下面验证一下,在主从复制建立后,主节点的数据会复制到从节点中。

(1)首先在从节点查询一个不存在的key:
在这里插入图片描述
(2)然后在主节点中增加这个key:
在这里插入图片描述
(3)此时在从节点中再次查询这个key,会发现主节点的操作已经同步至从节点:在这里插入图片描述
(4)然后在主节点删除这个key:在这里插入图片描述
(5)此时在从节点中再次查询这个key,会发现主节点的操作已经同步至从节点:
在这里插入图片描述

=================================
到这里测试已经结束,你懂了吧?懂了吧?我走了,再见bye


版权声明:本文为qq_41847875原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。