Redis单机数据库

Redis服务器将所有数据库保存在redis.h/redisServer结构的db数组中,它的每一项都是redis.h/redisDb结构

redisDb *db 

int dbnum  由服务器配置的database选项决定   默认16 


切换过程

每个客户端对应一个目标数据库,可切换  默认0号  可用select命令切换  

客户端状态 redisClient 结构中的db属性 记录客户端当前的目标数据库  是一个redisDb指针

切换是 通过修改指针记录切换


 数据库键空间  key-value pair数据库    dict字典保存了所有的键值对

引用一张网络图来解析

Redis单机数据库

增删改查都是对键空间字典dict 进行操作的   这部分的原理后续在更新

而过期键是保存在expires中

设置键的生命周期过期时间 

expire  设置生命周期 超过ttl 会自动删除   setex 同样的原理

过期时间是一个时间戳     TTL PTTL返回一个时间带生命周期键的时间戳

关于生命周期和过期时间以及如何自动删除后续再讲

删除策略 

 定时删除  

惰性删除   只有碰到过期键才删除

定期删除    每隔一段时间主动查找并删除   

原理和实现后续再更新


RDB和AOF和复制功能对过期键的处理

save  bgsave  

del  

是等待主节点发送del统一删除  中心化的删除 保证主从唯一性 

数据库通知   让客户端通过订阅给定的频道或者模式 来获知数据库中键的变化或者命令执行情况

发送通知