Redis高级的相关问题总结

本文深入探讨了Redis的两种持久化策略——RDB和AOF,分析了它们的优缺点以及在实际工作中的适用场景。RDB提供快速的数据恢复,而AOF确保数据完整性。同时,文章还介绍了Redis主从同步的全量和增量过程,以及哨兵系统在故障转移中的角色。对于数据安全性要求较高的场景,建议结合RDB和AOF使用。此外,讨论了Redis Cluster的槽分配策略,通过CRC16算法实现数据均匀分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.rdb和aof有什么区别?你们在工作中如何使用redis的持久化策略?

1.rdb定时对整个内存做快照,aof记录每一次执行的命令

2.rdb两次备份之间会丢失数据,aof取决于刷盘策略,相对比较完整

3.rdb宕机恢复速度快,aof恢复速度慢

4.rdb数据恢复优先级低,aof高,因为aof数据完整性更高

5.rdb占用大量cpu和内存的消耗,aof主要是磁盘io资源

rdb可以容忍数分钟的数据的丢失,只要追求速度快,aof对于数据的安全系数比较高

如果对数据安全性要求有较高,何以结合两者来使用

2.AOF的刷盘策略有哪些?

1.appendfsync always 每执行一次写命令,立即记录到AOF文件

2.appendfsync everysec 执行一次写命令先放到缓冲区,然后每隔一秒钟将缓冲区的数据写到aof中。

3.appendfsync no先放入AOF缓冲区,由操作系统决定什么时候写入磁盘

3.主从同步的全量同步和增强同步的过程是怎么样的?

全量增步:master将完整的内存数据生成rdb,发送rdb到slave。后续命令则记录在repl_baklog,逐个发送给slave。

增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave。

4.主观下线和客观下线是什么意思?哨兵如何选举master?

哨兵基于pingpang心跳的机制,每隔1秒向每个master发送ping命令,如果在规定的和时间内没有响应回来,则认为时主观下线,如果还有哨兵继续向这个master发送pingpang的心跳机制在规定的时间内也没有得到相应的回应,这时就会认为这个master客观下线。

首先会判断slave节点与master节点断开时间长短,如果超过指定值则会排除该节点,然后判断slave节点的slave-priority值,越小优先级越高,如果是0则永不参与选举,如果slave-prority一样,则判断slave节点的offset值,越大说明数据越新,优先级越高,最后是判断slave节点的运行id大小,越小优先级越高。

实现:sentinel给备选的slave1节点发送slaveof no one命令,让该节点成为master,sentinel给所有其它slave发送slaveof IP port 命令,让这些slave成为新master的从节点,开始从新的master上同步数据。最后,sentinel将故障节点标记为slave,当故障节点恢复后会自动成为新的master的slave节点。

5.redis cluster集群的分槽策略是怎么样的?

计算方式是利用CRC16算法得到一个hash值,然后对16384取余,得到的结果就是槽值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值