叨叨缓存中间件之Redis持久化机制

一、Redis持久化的必要性

相信大家普遍都知道,Redis是NoSQL中的一员,其数据都保存在内存中。那我们知道,内存有一个特性就是断电即失!所以,Redis的数据存储如果仅仅瞄准内存的话,数据的安全性和可靠性是无法得到保证的!故而,引申出Redis持久化机制。

那么,有关Redis持久化机制的详细解读又是怎样的呢?其实就是Redis的数据除了存储在内存中,还可以配置持久化策略:将Redis的数据保存到磁盘上。这样,即使Redis宕机或者服务故障,我们通过重启Redis服务,可以从磁盘中恢复历史数据。Redis持久化策略的应用,大大提升了数据的安全性和可靠性!


叨叨缓存中间件之Redis持久化机制_第1张图片


二、Redis如何实现持久化

Redis目前有2种方式进行数据的持久化:

  • RDB方式:在指定时间间隔内对数据进行快照存储
  • AOF方式:记录每次对Redis服务的数据写入操作命令,当服务重启时通过重新执行这些命令来恢复原始数据

2.1 RDB方式

2.1.1 客户端直接通过命令BGSAVE或者SAVE来创建一个内存快照

  • BGSAVE 调用fork来创建一个子进程,子进程负责将快照写入磁盘,父进程照常工作,不受任何影响。
  • SAVE 执行SAVE命令过程中,不再响应其他命令。

2.1.2 进入redis安装目录,找到redis.conf配置文件,在其内调整save命令的配置选项。redis发生数据写入操作的个数满足条件会触发BGSAVE命令的执行

# 900秒之内至少发生1次数据写入操作
save 900 1
# 300秒之内至少发生10次数据写入操作
save 300 10
# 60秒之内至少发生10000次数据写入操作
save 60 10000

2.1.3 RDB的优缺点

优点 缺点
对性能影响最小 同步时易丢失数据(具体看配置的数据写入时间间隔)
RDB快照文件在数据恢复速度上,比AOF要快得多 如果数据集比较大且CPU不够强悍(比如单核CPU),Redis在fork子进程时可能要消耗相对较长的时间,会影响Redis对外提供服务的能力

2.2 AOF方式

2.2.1 开启AOF持久化

appendonly yes

2.2.2 AOF策略调整

# 每次有数据修改发生时都会写入AOF文件
appendfsync always

# 每秒钟同步一次,该策略为AOF的缺省策略
appendfsync everysec

# 从不同步。高效但是数据不会被持久化
appendfsync no

2.2.3 AOF的优缺点

优点 缺点
最安全 文件体积较大
容灾 性能消耗比RDB要高
易读,可修改 数据恢复速度上比RDB慢

你可能感兴趣的:(班级作业,NoSQL)