Redis 持久化机制
在使用 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 文件当中,可以看到
RDB 持久化采用的是定时存储(全量同步),在 redis.conf 文件当中定义了三种方法,分别是
这里就是说如果在规定的时间内发生变化的 key 的数量达到我们设定好的数量之后,redis 就会通过一个子进程来进行数据的快照。 RDB 的优点(官方解释): 以上为官方解释的 RDB 机制的优点,总体来说 RDB 可以保存一个版本链,在进行灾难修复的时候效率比 AOF 会高,而且它只会创建一个子进程所以对redis 性能的影响也比较低。 RDB 的缺点(官方解释): 缺点就是因为设置了不同的 save 时间点(每 900 秒(15分钟)至少有一个 key 发生变化,则 dump 内存快照),如果这个900秒没有到系统就宕机了,那么数据还是会丢失掉,而且数据量大的时候 fork 子进程还是会影响 redis 的性能。 AOF 持久化实现原理 官方解释是AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。
AOF 的优点(官方解释): AOF 的缺点(官方解释): (编辑:沈阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
