redis--数据库

2019-07-21  本文已影响0人  MontyOak

数据库对象定义如下:

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文件生成和加载时会过滤掉已过期的键

上一篇 下一篇

猜你喜欢

热点阅读