Reds持久化

支持两种方式
RDB 在指定的时间间隔内 把内存的数据快照到磁盘 默认方式
AOF 所有server执行的命令记录到磁盘,启动时在执行一遍 在尽量减少丢数据的情况下使用,类似MySQL的binlog

RDB模式
vim /etc/redis/6379.conf
142 save 900 1 900秒有1次改变就快照一次写入磁盘
143 save 300 10 300秒有10次改变写入磁盘
144 save 60 10000 60秒有10000次改变写入磁盘
165 rdbcompression yes 可以关掉压缩功能no
177 dbfilename dump_6379.rdb 保存的文件名称
187 dir /var/lib/redis_6379 保存路径
如果要禁用RDB模式下的持久化删除 142 143 144 这三行即可

127.0.0.1:6379> SAVE 会造成阻塞 redis会先执行save不操作其他
127.0.0.1:6379> BGSAVE 后台操作会新起一个进程不会造成阻塞
Background saving started

恢复方法:
redis再次启动时会自动读取备份文件
优点:利于恢复 备份文件为二进制文件体积小 对性能衰减小 数据恢复时间短
缺点:每次保存都需要fock去一个子进程 对数据量大的时候 会有短暂的延迟 性能衰减

AOF模式
vim /etc/redis/6379.conf
504 appendonly yes
508 appendfilename “appendonly.aof” 文件名称
535 appendfsync everysec 存储方式

AOF持久化存储方式
appendfsync always #收到写命令后就立即写入磁盘,效率最差,效果最好
appendfsync everysec #每秒写入磁盘一次,效率与效果居中
appendfsync no #完全依赖操作系统,效率最佳,效果没法保证

no-appendfsync-on-rewrite如果该参数设置为no,是最安全的方式,不会丢失数据,但是要忍受阻塞的问题如果设置为yes呢?这就相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,因此这样并不会造成阻塞(因为没有竞争磁盘),但是如果这个时候redis挂掉,就会丢失数据。丢失多少数据呢?在linux的操作系统的默认设置下,最多会丢失30s的数据。

存储路径与RDB路径相同
/var/lib/redis_6379/

AOF模式有一个重写功能 比如 set a 1 set a 2 set a 3 只会记录最后一条 set a 3

修复AOF 文件出错
redis-check -aof 文件名

两个持久化功能可以同时启用

猜你喜欢

转载自blog.csdn.net/bjgaocp/article/details/88426637