- 为什么redis需要持久化:redis是单机小程序,redis是内存级的io,内存需要对数据持久化,否则丢数据
- 持久化方式:快照、日志,这不仅仅针对于redis,快照的概念是全量的,比如游戏存档,rdb是redis的快照,按照时间点的,但是时间点间隔大容易丢数据,好处是恢复速度快。记录了当时时间点所有全量的数据状态。
- aof是redis日志,日志是线性,追加的,记录命令执行状态的,伴随redis命令不断执行,redis的日志会越来越大,但是因为记录所有redis操作所以数据恢复很全,但是因为日志是线性的,记录的是执行命令的文本,这样恢复数据也是重新执行一遍,比较慢。redis默认开启的是rdb,因为redis快是其追求,而且redis场景大多数也是缓存。所以持久化也是redis必要的,因为如果数据没有,请求会透传redis把mysql压死。
- 持久化仅仅解决内存丢失数据问题,不解决其他痛点。
- 日志有3种实现方式:
- 1.redis接受修改的操作,内存变现后开始堵塞,调io写入磁盘,返回成功,这样一个链式调用保证每一条命令不会丢失。
- 2.redis只把增删改的操作变化的刷给内核,而我们都知道程序给内核的数据不是立刻写入磁盘的。达到一定量级才批量写入(pagecache)。
- 3.折中的方案是每秒钟刷一下,每秒控制丢失的量相对于第一种加时间限制。日志都是追加的,会越来越大,这样不行,redis4.x后在开启aof日志时,吧删除抵消指令这件事变成全部删除,生成rdb在吧该时间点rdb拼入日志,形成混合日志方案。
redis 持久化
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 本文是《Redis开发与运维》的学习笔记。内容大部分摘自此书。 众所周知,redis是内存数据库,它把数据存储在内...