Redis持久化

 

所谓Redis持久化,就是将内存中Redis数据保存到磁盘中,达到一个备份的效果,以便恢复数据。

 

Redis的持久化方式有两种: RDB方式  AOF方式

 

 

RDB方式:

 

打开Redis配置文件 vi redis.conf

save 900 1 (每900秒 发生1次修改 写入磁盘)
save 300 10 (每300秒 发生10次修改 写入磁盘)
save 60 1000 (每60秒 发生100次修改 写入磁盘)

dbfilename dump.rdb (保存数据的文件名)
dir ./ (保存数据的所在目录)   注意注意注意:这里有大坑!  这个保存数据的所在目录  默认的是./  实际上这个目录并不是相对于redis.conf所在的目录,而是相对于你执行命令时的目录。
检查该文件有没有 如果没有请先手动创建
Redis启动时会自动读取该文件 恢复数据 (因此可以写个定时任务定时将dump.rdb备份到别处以时间命名 以便可以进行恢复任何阶段的数据)

 

重启Redis : /etc/init.d/redis restart
(redis设置系统服务请查看 http://www.cnblogs.com/fengyumeng/p/7513699.html)

 

原理:子进程备份数据->替换旧的dump.rdb
优点:速度快 性能强
缺点:如果在写入磁盘之前服务器突然抽风,容易丢失数据。

 

 

AOF方式:

 

打开Redis配置文件 vi redis.conf

appendonly no (是否开启AOF方式)
appendfilename "appendonly.aof" (保存数据的文件名)

appendfsync always (每修改一次同步一次)
appendfsync everysec (每秒同步一次)
appendfsync no (不同步)
选择哪种打开哪种

 

原理:不断在appendonly.aof文件中追加数据
优点:最大程度保证数据安全
缺点:速度慢

 

当 Redis 启动时, 如果 RDB 持久化和 AOF 持久化都被打开了, 那么程序会优先使用 AOF 文件来恢复数据集, 因为 AOF 文件所保存的数据通常是最完整的。

 

虽然Redis服务重启后数据可以恢复,但是Linux重启后Redis数据还是丢失干净,解决方式如下:

 

编辑sysctl.conf文件
vi /etc/sysctl.conf

添加一行
vm.overcommit_memory = 1

立即生效
sysctl -p

 

posted @ 2017-10-20 10:13  不该相遇在秋天  阅读(265)  评论(0编辑  收藏  举报