本文pesiwang同学的投稿分享,对Redis RDB文件持久化的内部实现进行了源码分析。
本文分析源码基于 Redis 2.4.7 stable 版本。下面是其文章原文:
rdb是redis保存内存数据到磁盘数据的其中一种方式(另一种是AOF)。Rdb的主要原理就是在某个时间点把内存中的所有数据的快照保存一份到磁盘上。在条件达到时通过fork一个子进程把内存中的数据写到一个临时文件中来实现保存数据快照。在所有数据写完后再把这个临时文件用原子函数rename(2)重命名为目标rdb文件。这种实现方式充分利用fork的copy on write。
另外一种是通过save命令主动触发保存数据快照,这种是阻塞式的,即不会通过生成子进程来进行数据集快照的保存。
相关配置CODE:
save
经过多少秒且多少个key有改变就进行,可以配置多个,只要有一个满足就进行保存数据快照到磁盘CODE:
rdbcompression yes保存数据到rdb文件时是否进行压缩,如果不想可以配置成’no’,默认是’yes’,因为压缩可以减少I/O,当然,压缩需要消耗一些cpu资源。CODE:
dbfilename dump.rdb快照文件名CODE:
dir ./快照文件所在的目录,同时也是AOF文件所在的目录
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/301743/viewspace-747969/
,如需转载,请注明出处,否则将追究法律责任。