十三、线上Redis持久化策略一般如何设置
如果对性能要求较高,在master最好不要做持久化,可以在某个slave开启aof备份数据,策略设置为每秒同步一次即可。
十四、一次线上事故,Redis主节点宕机导致数据全部丢失
如果你的Redis采用如下模式,就会发生数据丢失问题:
- master-slave + 哨兵部署实例。
- master没有开启数据持久化功能。
- Redis进程使用supervisor管理,并配置为进程宕机,自动重启。
如果此时master宕机,就会导致下面问题: - master宕机哨兵还未发起切换,此时master进程立即被supervisor自动拉起。
- 但master 没有开启任何数据持久化,启动后是一个空实例。
- 此时slave 为了与master保持一致,他会自动清空实例中的所有数据,slave也变成一个空实例。
这个场景下master/slave的数据就全部丢失了。
这时,业务应用在访问Redis时,发现缓存中没有任何数据,就会把请求全部打到后端数据库中,这还会进一步引发缓存雪崩。
这种情况下,我们一般不应该给Redis主节点配置京城宕机马上自动重启策略,而是应该等哨兵吧某个slave切换为master之后,再重启之前宕机的节点让其变成slave。
十五、Redis如何做綫上备份
1、写crontab定时调度脚本,每小时都copy一份rdb或aof文件到另一台机器中,保留最近48小时的备份。
2、每天都保留一份当日的数据备份,到一个目录中,可以保留最近一个月的备份。
3、每次copy备份的时候,都把太旧的备份删除。
十六、Redis主从复制风暴是怎么回事
如果Redis主节点有很多从节点,在某一时刻如果所有从节点都同时连上主节点,那么主节点会同时吧内存快照RDB发给多个从节点,这样会导致Redis主节点压力过大,这就是所谓的Redis主从复制风暴问题。
这个问题我们对Redis主从架构做一些优化得以避免,比如可以做下面这种树形复制架构。
十七、Redis集群网络抖动导致频繁主从切换怎么处理
十八、Redis集群为什么至少需要三个master节点、为什么推荐奇数个节点
因为新的master的选举需要大于半数的集群master节点同意才能选举成功,如果只有两个master节点,当其中一个挂了,是达不到选举master条件的。
奇数个master节点可以在满足选举条件的基础上,节省一个节点,比如三个master和四个master相比,都挂了一个master,都可以选举,都挂了两个就都不能选举了。所以技术的master节点更多的是从节省机器资角度出发的。
十九、Redis集群支持批量操作命令嘛
对于类似mset、mget这样多个key的原生批操作命令,redis集群只支持所有key落在同一个solt的情况,入股分布在多个solt就会报错,如果在key前面加上{XXX},这样参数数据分片hash计算的时候只会是大括号里的值,这样就确保不同的key在同一个slot中。
mset {user}:1:name wqx {user}:1:age:18