《Redis设计与实现》学习笔记(七) 第九章 数据库
文章目录
一. 服务器中的数据库
- redisServer中的db数组保存着所有的数据库
- 初始化时根据默认的dbnum=16创建16个数据库
二. 切换数据库
redisClient中的db是指向redisServer中db的一个指针,通过改变指针改变当前使用的数据库
三. 数据库键空间
- RedisDB中的
dict字典
保存了所有的键值对 - 所有的增删改查都是对dict字典的修改
四. 设置键的生存时间或过期时间
- Expire秒,pexpire毫秒,expireat秒数时间戳,pexpireat毫秒数时间戳
- 过期字典保存过期时间
Persist
将键设置为永不过期
五. 过期键删除策略
- 定时删除:用
定时器
定在过期时间,一过期就删除 - 惰性删除:过期了先不管,取键时检查,过期了就删除
- 定期删除:每隔一段时间检查,删除过期键
六. AOF,RDB和复制功能对过期键的处理
- 执行
SAVE或BGSAVE
命令时会对过期键进行检查 - 载入
RDB文件
时也会检查 - 在
AOF模式
下,过期未被删除的不会产生影响 - 被删除后,将会在AOF文件中追加一条DEL命令
七. 数据库通知
发送通知