redis--数据库

数据库对象定义如下:

struct redisServer {
    // ...
    int dbnum; // 数据库数量
    redisDb *db; // 数组保存redis中所有db
    // ...
}

redisDb定义如下:

typedef struct redisDb {
    // ...
    dict *dict; // 数据库键空间,保存所有键值对
    // ...
}

过期键删除

惰性删除
redis过期键惰性删除策略定义在db.c/expireIfNeeded,所有对键的读写操作进行前都需要调用这个方法进行检查。若已过则清除键。
定期删除
redis过期键定期删除策略定义在redis.c/activeExpireCycle,每当redis周期性执行redis.c/serverCron的时候,都会执行。它在指定时间内,分批遍历各个数据库,从expires中随机检查一部分键做过期检查。
RDB
rdb文件生成和加载时会过滤掉已过期的键

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • dbnum默认值为16. 1. 数据库键空间 redis是一个键值对数据库服务器,每个数据库有一个redisDb结...
    黑金星阅读 351评论 0 1
  • 江水寒,夜色孤,霏雨湿秋风,流水轻抚。 人成各,今非昨,凝眸无限意,谁人肯顾? 抚瑶琴,吟梵曲,一曲终难了,禅意正浓。
    冬夏知多少阅读 527评论 3 16
  • 1.出轨 青青和李刚从初中认识,青涩的年纪就开始恋爱。他们的爱情一路从学生时代,跌跌撞撞延续到结婚十八年后的201...
    奔跑得小猪阅读 747评论 2 15