加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Redis 持久化机制

发布时间:2022-11-16 17:02:15 所属栏目:MySql教程 来源:转载
导读: 1. 为什么要进行数据持久化?
在使用 redis 缓存减轻了 mysql 读写压力之后,如果数据在 redis 中不存在,那么最终的方法还是要去数据库中查找,因为最终数据还是存储在数据库当中,在这种

1. 为什么要进行数据持久化?

在使用 redis 缓存减轻了 mysql 读写压力之后,如果数据在 redis 中不存在,那么最终的方法还是要去数据库中查找,因为最终数据还是存储在数据库当中,在这种情况下,如果 redis 宕机重启之后如果没有持久化机制,那么会导致原本存储在 redis 中的数据全部消失,而这时候如果有大量的请求同时到来的话,那么就会对 mysql 数据造成非常大的压力,可能会把数据库也会干趴下,所以这时就需要 redis 来进行一个持久化的管理。

2. 持久化的作用

redis 因为在某种原因的情况下宕机以后,数据是不会丢失的,因为 redis 有一个解决的方法就是 redis 的持久化机制。而且大部分的缓存框架都会有基本的淘汰策略与持久化机制。

redis 的持久化机制有两种 :AOF 、RDB(默认)。

3. RDB持久化实现原理

官方的解释是RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。在 redis 当中mysql持久化, 它已经帮忙我们默认开启了 RDB 缓存,在 linux 系统下的redis.conf 文件当中,可以看到

rdbcompression yes            # 开启 RDB 持久化机制
-------------------------------------------------------------------------------
dbfilename dump.rdb           # RDB转储数据库的文件名
-------------------------------------------------------------------------------
dir /www/server/redis/        # RDB 数据存储的文件目录

RDB 持久化采用的是定时存储(全量同步),在 redis.conf 文件当中定义了三种方法,分别是

save 900 1                # 每 900 秒(15分钟)至少有一个 key 发生变化,则 dump 内存快照。
save 300 10               # 每 300 秒(5分钟)至少有十个 key 发生变化,则 dump 内存快照。
save 60 10000             # 每 60 秒(1分钟)至少有一万个 key 发生变化,则 dump 内存快照。

这里就是说如果在规定的时间内发生变化的 key 的数量达到我们设定好的数量之后,redis 就会通过一个子进程来进行数据的快照。

RDB 的优点(官方解释):

以上为官方解释的 RDB 机制的优点,总体来说 RDB 可以保存一个版本链,在进行灾难修复的时候效率比 AOF 会高,而且它只会创建一个子进程所以对redis 性能的影响也比较低。

RDB 的缺点(官方解释):

缺点就是因为设置了不同的 save 时间点(每 900 秒(15分钟)至少有一个 key 发生变化,则 dump 内存快照),如果这个900秒没有到系统就宕机了,那么数据还是会丢失掉,而且数据量大的时候 fork 子进程还是会影响 redis 的性能。

AOF 持久化实现原理

官方解释是AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。

appendonly no                       # AOF 默认是关闭的,设置为 yes 即为开启
-------------------------------------------------------------------------------
appendfilename "appendonly.aof"     # AOF 数据存储的文件目录

AOF 的优点(官方解释): AOF 的缺点(官方解释):

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!