本次只写一台主机上调试,一台主服务器,多台从服务器
1.redis主从复制功能
首先下载好redis压缩包,解压后打开redis.conf或redis.windows.conf进行配置
事先复制多份作为子服务器
主服务器中配置:port 6379
daemonize yes开启安全模式
notify-keyspace-events EX默认是空,保存配置后,重启Redis服务,使配置生效
从服务器中配置的:port除了6379的就行,我测试使用的是6378、6380......
daemonize yes开启安全模式
notify-keyspace-events EX
slaveof 127.0.0.1 6379 集群用到 后面的地址和端口用于指向主服务器
sentinel monitor mymaster 127.0.0.1 6379 2 集群用到,设置master的名字,在代码中配置会用到mymaster,后面的地址同样是指向主服务器的地址,2表示当有2个从服务器都连接失败后就停止
配置结束
以下命令都是在redis目录下cmd执行
启动主服务器redis-server.exe redis.windows.conf同样这个windows看你的文件名有没有
启动成功后启动从服务器redis-server.exe redis.windos.conf --sentinel注意sentinel模式必须要,不然启动报错
全部从服务器启动成功
分别在redis文件夹下新开cmd窗口执行命令
redis-cli -h 127.0.0.1 6379 -a pwd启动主服务器客户端,进行set name 123
redis-cli -h 127.0.0.1 6378 -a pwd没有密码的话-a pwd就不要 当上一步执行了set即可在6378这个客户端执行get name查看主服务器设置的值了,没出错就会显示123
以上就是全部的redis主从复制过程,那么在代码中只需要配置
主服务器的地址
spring.redis.host=127.0.0.1
#redis主服务器连接端口
spring.redis.port=6379
从服务器的master名
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=127.0.0.1:6378,......
service中只需要注入
@Autowired private StringRedisTemplate redisTemplate;
使用这个自带的类就能在redis中就行操作数据了,操作的数据也会复制在spring.redis.sentinel.nodes配置的列表里,主服务器就行写,从服务器就行读,这也就是传说中的读写分离。
springboot启动类上加一下注解 @EnableCaching//因为要使用redis,所以打开缓存, @EnableScheduling//定时器总开关,因为我们需要多个定时器来控制 @SpringBootApplication @EnableRedisHttpSession
2.rdb备份数据
在主服务器redis目录下启动好服务器并打开客户端,执行
save命令即可自动生成rdb文件,默认的配置中配置好备份规则,使用默认的就好了。
配置文件中配置了dir指向了rdb的文件路径。不需要修改,默认就行
重启服务器,从启客户端执行n:
config get dir没出错后执行
bgsave即可恢复数据
再次get name即可查询到以前的数据了。
备份结束
appendonly.aof dump.rdb
appendonly no
appendfsync everyses
数据操作复合配置中的备份规则时,就会自动备份了。