感觉知识还是靠自己手写出来记得更深,更久。
redis持久化可以通过 /usr/local/etc/redis.conf,配置文件配置。
Redis的持久化有 RDB, aof 两种。
RDB 默认的保存文件dump.rdb , 了解其过程
(1) redis 使用fork函数,复制一份当前进程(父进程)的副本(子进程);
(2)父进程继续接收并处理客户端发来的命令,而子进程开始将内存的数据写入硬盘中的临时文件中。
(3)当子进程写入完所有数据会用临时文件替换久的rdb文件,至此快照操作完成。
开启方式配置
save 900 1 //每900秒至少有一个键改变则进行一次快照
save 300 10 //每300秒至少有十个键改变则进行一次快照
save 60 10000 //每60秒至少有10000个键改变则进行一个快照
RDB 是通过压缩的二进制格式,所占用空间小于内存中的数据,便于传输。
Save ,bgsave 命令可以手动执行持久化查找, 但是save 是阻塞的, bgsave 是非 阻塞的, 一般不建议用save。
快照保存文件 dbfilename dump.db
Aof (append only file )
开启方式 appendonly yes.如果要关闭的话appendonly no;
了解其原理
每执行一条会改变redis 数据命令,redis 就会将该命令写入到硬盘AOF文件中,保存AOF文件名字 appendfilename appendonly.aof.
然而有的命令会出现重复,也就是说之前的一些命令会收后期命令的改变,前期的命令是无效的,这个时候redis 会自动优化aof文件,
可以通过auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb 配置, 来看是否优化oaf.
auto-aof-rewrite-percentage 参数的意思:当目前的oaf文件大小超过上一次oaf文件大小的百分之多少时重写。
auto-aof-rewrite-min-size 参数的意思是:允许重新的最小的oaf文件大小。
Bgrewriteaof 可以手动执行oaf重写操作。
自动同步方式配置
# appendfsync always //每次写入都同步,这个最慢,性能不好
appendfsync everysec //每秒同步一次, 所以一般用这个
# appendfsync no //不主动同步,而是由操作系统来做(即每30s 同步一次)这个不安全,数据丢失多。