Java:Jedis操作Redis时,是否有回调写法知道某个key是否超时呢?

启动线程不断轮训判断某个key是否因超时而被消除,总觉得不是个好办法,有没有回调的写法知道某个key是否超时呢?
——————————————————————————————————————————
经@lazyp前辈指点可以用Guava Cache,Guava Cache超时可以设置回调函数。

阅读 8.6k
2 个回答

往redis里面设置内容的之后,再设置一个超时时间就行了。
jedis.expire(key, time_expire);

Redis实现超时的方法有两种,一种是惰性处理:等用户访问的时候再判断key是否超时,另一种是定期逐步扫描:类似于一个定时任务,每次都会扫描部分key,把超时的key删除。
不管哪种方法都不能实现,key一旦超时就以及回调。

其实还有一种超时策略就是定时删除,在设置超时时间的时候,创建一个定时器,让定时器在超时时间到来的时候,立即执行对键的删除操作。但是这种方式需要占用相当一部分CPU时间,所以Redis并没有采用。(参考《Redis设计与实现》)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题