小编典典

Redis如何使密钥失效?

redis

Redis如何实现密钥过期?从这里我了解到Redis存储了密钥将过期的时间,但是这是如何实现的呢?


阅读 309

收藏
2020-06-20

共1个答案

小编典典

简而言之-每个Redis对象都有一个过期时间。除非您将对象设置为过期,否则该时间为“从不”。

现在,到期机制本身是半延迟的。延迟过期意味着您实际上不会在读取对象之前使它们过期。读取对象时,我们检查它的过期时间戳记,如果它是过去的,则不返回任何内容,并在到达该对象时删除该对象。但是问题在于,如果永不触摸键,它只会无缘无故地占用内存。

因此,Redis添加了第二层随机活动到期时间。它只是一直读取随机密钥,并且当触摸过期密钥时,它会根据惰性机制被删除。这不会影响过期行为,它仅添加过期密钥的“垃圾回收”。

当然,实际的实现要比这复杂得多,但这是主要思想。

您可以在此处了解更多信息:http :
//redis.io/commands/expire

并且可以在此处找到有效到期周期的源代码:https
:
//github.com/antirez/redis/blob/a92921da135e38eedd89138e15fe9fd1ffdd9b48/src/expire.c#L98

2020-06-20