redis的过期key是如何实现的

redis的key可以设置过期时间,那么这个key的过期时间是什么方式实现的。或者可以换一种说法,Map的key如何设置一个过期时间。

后台的线程处理

这个首先把这个key设置一个值,然后后台总是有一个线程在监视着这些值,当时间一当不满足了就会把该key淘汰掉

redis会自动记录每个key的创建时间,与有效时间比较一下就知道是否过期了。

君不知有一种东西叫定时器?

  • 建立一个结构体,添加存活时间的参数。
  • Map的key可以通过在Entry中增加有效期的属性,然后重写get方法,每次获取的时候就判断其是否过期,过期则从map中移出并且返回null。
  • 如果要实现Map中key过期则自动移出,则需要添加一个“伴生线程”,用于检查过期的key。(实现难度较高,没有特殊要求就在get的时候处理即可)

我的思路:key可以设计成一个map结构,key是key,value值是时间的串,当判断是否过期的时候就去比较当前时间和串的时间的减法,当小于0的时候证明key过期了,进行remove