1.备份
备份有两种方式:
-
快照:备份当前在内存中的数据。当数据量大时可能会卡顿,但恢复重启快
-
AOF(append-only file):将执行过的写命令依次保存在redis文件中,将来就可以依次执行那些保存命令恢复redis数据。备份一般不会卡顿,但恢复重启慢
save 900 1
save 300 10 //当300秒内执行10个写命令是,启用快照备份
save 60 10000
//执行save命令时,将禁止写入命令
stop-writes-on-bgsave-error yes
//异步线程保存命令,bgsave和save的不同就是执行bgsave时,允许客户端继续读写redis。
//值为yes表示当执行bgsave失败时,redis将停止写操作
rdbchecksum yes
//是否对rbd文件(持久化文件)检验
dbfilename dump.rdb
//当采用快照备份时(持久化),reids将用它来保存数据
appendonly no
//是否启用AOF方式进行备份
appendfilename "appendonly.aof"
//采用AOF方式备份的命令都会写入这里
appendfsync everysec
//代表每秒同步依次命令到AOF文件
no-appendfsync-on-rewrite no
//是否在后台aof文件重写期间调用fsync,如果yes,重写期间调用可能会阻塞
2.回收策略
配置项为maxmemory-policy:值常用有4种回收策略
- volatile-lru:回收超时的键值对
- allkeys-lru:回收最近使用最少的
- volatile-ttl:回收存活时间最短的
- noeviction:当内存达到最大时只能读不能写
maxmemory-samples 3
//表示样本的最大个数
3.主从同步
原理如图
主机不用配置,只需将某个redis服务器的slaveof配置到主机就行了
假设现在有两个Redis服务器,地址分别为127.0.0.1:6379和127.0.0.1:12345,如果我们向服务器127.0.0.1:12345发送以下命令:
127.0.0.1:12345> SLAVEOF 127.0.0.1 6379
OK
4.硝兵模式
多个硝兵共同监控主从服务器,一旦发生故障切换,集合集体投票,通过发布订阅的方式,让各自监控的服务器实现主从切换
- 先配置从服务器,主服务器不用配置
#使得redis服务器可以跨网段访问
bind 0.0.0.0
#用于外部访问提供的密码
requirepass "abcdef"
#配置主服务器
slaveof 192.168.11.128 6379
#主服务器的密码,注意,主服务器是没有密码的,这里只是从给主的配置
masterauth abcdef
- 在sentinel.conf文件下3个硝兵的配置
protectd-mode no
#mymaster是自定义的服务器名称,2表示只有两个或以上的硝兵认为主服务器不可用时才会做故障切换操作
sentinel monitor mymaster 192.168.11.128 6397 2
sentinel auth-pass mymaster adcbef
3.在src目录下启动服务器和硝兵
./redis-sentinel ../sentinel/.conf
./reids-server ../reids.conf
redis cluster集群
实际场景中,单个redis节点node可能不满足要求,为了配置一个redis cluster,我们需要准备至少6台redis,将数据按一定的规则分配到多台机器。