《redis设计与实现》读笔之redis过期与持久化
2021/9/19 19:06:44
本文主要是介绍《redis设计与实现》读笔之redis过期与持久化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Redis基础
redis主要由【dict】【expires】两个字典构成。dict负责键值对,expires保存键值对过期时间。
expires结构: { key:指针,指向键对象 value: longlong过期时间,毫秒为单位的UNIX时间戳 }
redis键总是一个字符串对象,value可以是任意redis对象类型
redis过期
1 设置过期
EXPIRE, PEXPIRE关键字设置过期
2 保存过期
过期字典:expires字典保存了所有键的过期时间
{
key:指针,指向键对象
value: longlong过期时间,毫秒为单位的UNIX时间戳
}
所以可以通过过期dict里的value和当前unix时间戳比较,判断是否过期。
3 过期键删除
- 定时删除:设置定时器timer,在设定key的时候设定。键多时,cpu不友好
- 惰性删除:获得键的时候,查看过期dict判断是否过期。cpu友好
- 定期删除:每隔一段时间对数据库进行检查,删除过期键。折中,但是不好设置删除的时长和频率
AOF:AOF写入:一个键过期,但是没被删除,对于AOF不会有影响。当惰性删除or定时删除后,程序向AOF追加一个DEL命令来删除.AOF重写:检查过期的键。 RDB:创建RDB时:对键检查,过期的不会载入到快照。载入RDB文件时:主服务器模式运行会检查键是否过期,从服务器模式不会。
redis持久化
RDB snapshot快照
快照式的持久化方法。
redis数据持久化时,现将数据写到临时文件,持久化结束后再用临时文件替换上次持久化好的文件。保证完整
是按照一定的策略周期性的将数据保存到磁盘。配置文件中的 save 参数来定义快照的周期
redis主进程进行数据处理,专门folk出一个子进程进行持久化,让主进程不参加IO
AOF: append only file
只追加,不改写。
将redis执行过的所有写指令记录到AOF文件中,下次redis重新启动时,只要把这些写指令从前到后重复执行一遍就可以数据恢复了。(默认一秒一次)AOF也是先写临时文件,再替换。
日志数据丢失怎么办:redis有redis-check-aof工具,防止追加日志时导致数据丢失。
日志文件太大怎么办:AOF文件大小超过阈值时,redis自动启动AOF文件重写,内容压缩。
RDB, AOF优缺点 不同点:
-
aof数据的恢复完整度更高。rdb保存的有些数据可能不是最新的, 可能丢失数据。
-
AOF文件会越来越大。
-
AOF方式恢复的很慢。
-
如果不小心执行了FLUSHALL, 对数据进行了误删,导致数据清空,AOF可以恢复。(删除最后一个flushall命令,重启Redis)
-
处理过期不同:
{AOF:AOF写入:一个键过期,但是没被删除,对于AOF不会有影响。当惰性删除or定时删除后,程序向AOF追加一个DEL命令来删除.AOF重写:检查过期的键。
RDB:创建RDB时:对键检查,过期的不会载入到快照。载入RDB文件时:主服务器模式运行会检查键是否过期,从服务器模式不会。
}
这篇关于《redis设计与实现》读笔之redis过期与持久化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识