Redis备份
当程序有较多的任务在执行时,我们可以redis-cli
模式下执行
bgsave
,进入后台进行备份.
Snapshot
当然我们可以直接运行save
命令.会写入dump.rdb文件。
配置说明:
save 900 1 #当900秒之后有一个key变化进行持久化保存
save 300 10 #当300秒之后有10个key变化进行持久化保存
save 60 10000 #60十秒之后有10000个key变化进行持久化保存
- 1
- 2
- 3
这个配置得仔细思考一下:最先判断的、最难满足的是 save 60 10000.
当60秒有9999key改变 不满足第三个条件,如果没有再没有key的改变那么只能等到300秒时进行持久化存储. 也就意味着秒数与key的改变数需同时满足.
AOF
当开启AOF时,AOF的优先级要高于Snapshot因此需要注意一些事项.
注意事项
1.使用Snapshot存储数据时,使用bgsave
命令执行后台存储,防止阻塞主线程的执行.
2.redis.conf文件当中的save配置要根据实际配置,避免影响性能或数据存储.
3.如需退出redis服务,强烈不建议使用kill -9 pid
这样会导致数据的丢失,最好根据Linux信号源机制去结束进程.
4.当redis需要中途开启AOF存储方式时,在充redis服务之前一定要拷贝一份当前的rbd文件,因为重启后会优先读取.aof文件,当第二次重启时,会将aof文件的数据存储到dump.rdb文件当中,这就会造成数据的丢失.
5.针对4的进一步补充,如果说我们将现在的数据存储到aof文件当中,在开启AOF存储方式时,那么当前的数据也会被AOF读取.
那么再开启AOF之前一定要运行bgrewriteaof
,这样先会生成一个aof文件.
6.请始终牢记AOF的优先级高于Snapshot的优先级
Redis恢复数据
恢复数据也很简单运行config get dir
获得文件的存储目录,将dump.rdb文件放入该目录下 启动redis会自动加载该文件的内容.
如果是开启了AOF也很简单,只需要将AOF文件放入到相应的redis启动指定的dir目录当中.
主从复制与备份
首先要说明一点
Redis的主从复制是建立在内存快照的持久化基础上的,只要有Slave就一定会有内存快照发生。
中从同步的过程:
第一次Slave向Master同步的实现是:
Slave向Master发出同步请求,Master先dump出rdb文件,然后将rdb文件全量传输给slave,然后Master把缓存的命令转发给Slave,初次同步完成。
第二次以及以后的同步实现是:
Master将变量的快照直接实时依次发送给各个Slave。但不管什么原因导致Slave和Master断开重连都会重复以上两个步骤的过程。
save操作是在主线程中保存快照的,由于redis是用一个主线程来处理所有 client的请求,这种方式会阻塞所有client请求。
摘自:http://www.cnblogs.com/zhoujinyi/archive/2013/05/26/3098508.html