java中的接口是类吗
346
2022-11-04
Redis的持久化
Redis支持持久化。
Redis 为了保证效率,数据缓存在了内存中,但是会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中,以保证数据的持久化。
持久化策略有两种:
RDB(Redis DataBase):快照形式,直接把内存中的数据保存到一个二进制文件 dump.rdb中,定时保存,保存策略。这是Redis默认持久化方式。
工作原理是当 Redis 需要做持久化时,Redis 会 fork 一个子进程,子进程将数据写到磁盘上一个临时 RDB 文件中。当子进程完成写临时文件后,将原来的 RDB 替换掉,这样做的好处是可以 copy-on-write。
Copy-on-Write,写时复制,换言之,不写时就不复制,只设置指针,指向同一个数据块。只有数据改变时,才在内存中开辟一块新地址,将原来的对象复制到新地址。对于快照技术来说,写时复制是一个必须的功能,因为快照文件可能很大,如果只变动了一部分,就没必要整个文件(上一个快照)都复制过来然后修改。
RDB 的优点是非常适合用于备份,比如,每小时备份一次。这样的话,即使遇上问题,也可以随时将数据集还原到不同的版本。RDB 非常适合灾难恢复。缺点是有部分数据丢失的风险。
AOF(AppendOnly File):把所有对 Redis 服务器进行修改的命令都存到一个文件里,类似数据库的日志。当 Redis 重启的时候,它会优先使用 AOF 文件来还原数据集,因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
使用 AOF 做持久化,每一个写命令都通过 write 函数追加到 appendonly.aof 中。当 Redis 重启时,将会读取 AOF 文件进行重放,恢复到 Redis 关闭前的最后时刻。优点是数据丢失风险很小,但性能受影响,而且AOF 的文件体积通常要大于 RDB 文件的体积。RDB 恢复数据集的速度也要比 AOF 恢复的速度快。
Redis 支持同时开启 RDB 和 AOF,系统重启后,Redis 会优先使用 AOF 来恢复数据,这样丢失的数据会最少。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~