Redis的使用(7)持久化

redis是内存型数据库,所谓持久化就是把内存中的数据写到硬盘


第一种方法:快照snapshotting
保存这一刻的数据状态(redis默认的持久化方式),保存的文件以.rdb保存存二进制
缺点(在本次快照保存后修改的数据可能丢失)
BGSAVE命令
在客户端中输入BGSAVE,redis调用fork来创建一个子进程,由子进程将快照写入磁盘,而父进程继续处理请求,不会阻塞
SAVE命令
在客户端中输入SAVE,redis在处理完快照创建前不能在响应任何命令
默认使用save(在conf文件的snapshotting章节)
15分钟1个key修改时触发
6分钟10个
1分钟10000个时触发
shutdown时也会触发
在客户端输入shutdown


AOF
将所有redis写命令记录到日记文件中,redis将写命令加到AOF文件末尾
开启AOF持久化(默认不开启在Append only mode 目录)
将appendonly no 置为 appendonly yes
默认文件为appendonly.aof 以redis可以理解方式存命令
频率 always everysec(推荐:每秒一次) no
设置 appendfsync everysec


重写AOF
由于redis运行时间过久,会出现重复或无效的redis写命令,为减小aop文件体积,与加快恢复时的速度,可以重写aof
方法一:在控制台执行输入命令BGREWTITEAOF
方法二:修改配置文件 默认 auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
*注意重写原理并不是压缩文件,而是重新生成文件;生成新文件时,redis调用fork进程根据当时的快照将向新得aof文件写入重建数据库的写命令,同时父进程将新接收的写命令存入缓存,等待fork子进程结束数据库重建命令写入新aof文件,再将缓存中的命令写入aof文件

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务