返回信息流求各位大佬指导:
redis中字典的底层实现是哈希表,里面有两个指针 dict *dict;dict *expire;其中expire是过期字典,其key指向键空间中的键所指向的字符串对象,而value则指向了一个long long类型的值(过期时间),小弟不明白的是为什么要这样设计,为什么不能把这个 dict和expire合并,这样就只需要存储一个hash表了,目前这种设计结构存储了两个hash表.难道我的理解有问题吗?求指导,谢谢!
这是一条镜像帖。来源:北邮人论坛 / cpp / #98733同步于 2019/3/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
redis字典过期键和键空间
newlife2012
2019/3/15镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 newlife2012 的大作中提到: 】
: 求各位大佬指导:
: redis中字典的底层实现是哈希表,里面有两个指针 dict *dict;dict *expire;其中expire是过期字典,其key指向键空间中的键所指向的字符串对象,而value则指向了一个long long类型的值(过期时间),小弟不明白的是为什么要这样设计,为什么不能把这个 dict和expire合并,这样就只需要存储一个hash表了,目前这种设计结构存储了两个hash表.难道我的理解有问题吗?求指导,谢谢!
我自己来回答一下吧,经过仔细的思考确实是考虑到对过期键的删除的性能方面的考虑,如果不采用这种过期字典的方式,那么久会在执行定期删除的时候必须遍历所有的key-value,而有了expire之后就不需要这样做了,性能可以大幅提升。