Redis单机数据库
Redis服务器将所有数据库保存在redis.h/redisServer结构的db数组中,它的每一项都是redis.h/redisDb结构
redisDb *db
int dbnum 由服务器配置的database选项决定 默认16
切换过程
每个客户端对应一个目标数据库,可切换 默认0号 可用select命令切换
客户端状态 redisClient 结构中的db属性 记录客户端当前的目标数据库 是一个redisDb指针
切换是 通过修改指针记录切换
数据库键空间 key-value pair数据库 dict字典保存了所有的键值对
引用一张网络图来解析
增删改查都是对键空间字典dict 进行操作的 这部分的原理后续在更新
而过期键是保存在expires中
设置键的生命周期过期时间
expire 设置生命周期 超过ttl 会自动删除 setex 同样的原理
过期时间是一个时间戳 TTL PTTL返回一个时间带生命周期键的时间戳
关于生命周期和过期时间以及如何自动删除后续再讲
删除策略
定时删除
惰性删除 只有碰到过期键才删除
定期删除 每隔一段时间主动查找并删除
原理和实现后续再更新
RDB和AOF和复制功能对过期键的处理
save bgsave
del
是等待主节点发送del统一删除 中心化的删除 保证主从唯一性
数据库通知 让客户端通过订阅给定的频道或者模式 来获知数据库中键的变化或者命令执行情况
发送通知