阅读redis源码时,发现RDB进程不判断key的过期时间:
https://github.com/redis/redis/blob/6.2/src/rdb.c
int rdbSaveKeyValuePair(rio *rdb, robj *key, robj *val, long long expiretime) {antirez, 3 years ago: • Fix rdbSaveKeyValuePair() integer overflow.
int savelru = server.maxmemory_policy & MAXMEMORY_FLAG_LRU;
int savelfu = server.maxmemory_policy & MAXMEMORY_FLAG_LFU;
/* Save the expire time */
if (expiretime != -1) {
if (rdbSaveType(rdb,RDB_OPCODE_EXPIRETIME_MS) == -1) return -1;
if (rdbSaveMillisecondTime(rdb,expiretime) == -1) return -1;
}
...
}
即使密钥过期,它也会保存密钥吗?为什么?
非常感谢!