redis如何分布式部署

2025-04-02 13:02:59
推荐回答(1个)
回答(1):

redis 的持久化:
快照(snapshot):特定时间、特定命令、特定条件来触发,把某一时刻在内存中的数据全部写出到硬盘当中去。
快照的时间不是实时的,可能会有数据的丢失。
在宕机之后,会把全部dump文件中的数据读入到内存中,会I/O密集。

AOF(append only file):每一次更新都会记录日志。日志文件是在快照的基础上来写的。
(在AOF这里的“快照”跟上面的“快照”不是一个东西。)

redis的 rdb 和 aof 持久化的区别:
参考:http://ptc.35.com/?p=275

aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。
rdb的特性如下:
Code:
fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来。
save, shutdown, slave 命令会触发这个操作。
粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复。
aof有如下特性:
Code:
把写操作指令,持续的写到一个类似日志文件里。(类似于从postgresql等数据库导出sql一样,只记录写操作)
粒度较小,crash之后,只有crash之前没有来得及做日志的操作没办法恢复。
两种区别就是,一个是持续的用日志记录写操作,crash后利用日志恢复;一个是平时写操作的时候不触发写,只有手动提交save命令,或者是关闭命令时,才触发备份操作。
选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb)。rdb这个就更有些 eventually consistent的意思了。