Redis的持久化机制
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中得数据同步到硬盘来保证持久化。
Redis目前支持两种持久化方式:
1.snapshotting(快照)也是默认的方式---把数据做一个备份
2.Append-only file(缩写aof)的方式---将写,更改,删除等操作存到文件中
一、Snapshotting方式
快照是默认的持久化方式。这种方式是将内存中的数据以快照的方式写入二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n庙内如果超过m个key做修改就自动做快照。
设置方式:save <seconds> <changes>
save 300 10#300秒内如果有超过10个键被修改,那么自动发快照保存
save 60 1000#1分钟内超过1000个key被修改,则自动发快照保存
redis可以同时支持多条规则
缺点:有时间间隔,所以有可能丢失数据。
二、aof方式
由于快照方式是在一定间隔时间做一次,所以如果redis意外down掉的画,就会丢失最后一次快照后的所有修改。
aof方式比快照方式有更好的持久化,是由于在使用aof时,redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会通过重新执行文件中保存的写命令来在内存中重新构建整个数据库内容。
由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。
可以通过配置文件告诉redis我们要通过fsync函数强制os吸入到磁盘的时机。
以上是开启aof持久化的方式还有就是aof持久化的三种方式以及优缺点。
当我们打开appendonly yes然后选取第二种保存到配置文件中,然后用pkil redis杀死redis的进程。然后重新启动redis的服务端,并且登录客户端。重新进行操作比如set key 'my key'
然后exit出来,就可以在redis的安装目录下看到一个appendonly.aof的文件我们vim打开它,看到类似这样
其实里面存储的就是你所有操作过的命令。
这样你在pkill掉redis重新进入的时候,就会发现之前所做的都会在。
原文链接:https://www.f2er.com/nosql/204287.html