Redis的缓存持久化
Redis将信息保存在内存。内存的特征就是一旦断电,所有信息都丢失,对于Redis来讲,所有数据丢失,就需要从数据库从新查询所有数据,这个是很慢的。更有可能,Redis本身是有新数据的,还没有和数据库同步就断电了,所以Redis支持了持久化方案,在当前服务器将Redis中的数据保存在当地硬盘上。
Redis恢复策略有两种(RDP和AOF)
1. RDB:(Redis Database Backup)
数据库快照,(将当前数据库转换为二进制的数据保存在硬盘上),Redis生成一个dump.rdb的文件
我们可以在Redis安装程序的配置文件中进行配置,空白位置编写如下内容
save 60 5
60表示秒数,既1分钟
5表示key被修改的次数
配置效果:1分钟内如果有5个key以上被修改,就启动rdb数据库快照程序
优点:
- 因为是整体Redis数据的二进制格式,数据恢复是整体恢复的.
缺点:
- 生成的rdb文件是一个硬盘上的文件,读写效率是较低的
- 如果突然断电,只能恢复最后一次生成的rdb中的数据
2. AOF(Append Only File):
AOF策略是将Redis运行过的所有命令(日志)备份下来
这样即使信息丢失,我们也可能根据运行过的日志,恢复为断电前的样子
它的配置如下
appendonly yes
特点:只保存命令不保存数据
理论上Redis运行过的命令都可以保存下来
但是实际情况下,Redis非常繁忙时,我们会将日志命令缓存之后,整体发送给备份,减少io次数以提高备份的性能和对Redis性能的影响
实际开发中,配置一般会采用每秒将日志文件发送一次的策略,断电最多丢失1秒数据
为了减少日志的大小
Redis支持AOF rewrite
将一些已经进行删除的数据的新增命令也从日志中移除,达到减少日志容量的目的