我已经在redis中为一个键设置了一个过期值,并希望在redis删除密钥之前有机会运行一段代码。是否有可能,如果可能的话......? 感谢
答案 0 :(得分:4)
我的解决方案是创建一个新键,其名称与我想要挂钩的名称相同,只是我为它添加了一个前缀,表示它是超时使用的键(“TO”) - 类似于:
for(int i=0;i<routes.size();i++){
Route route = routes.get(i);
Convert convert = new Convert();
if(map.get(route.node)!=null){
convert.lastRoute = route;
convert.segment.linkTo=String.valueOf(route.link);
}else{
map.put(route.node);
convert.firstRoute = route;
convert.segment.node=route.node;
convert.segment.linkFrom=String.valueOf(route.link);
}
convert.segment.weight+=route.weight;
convertedList.add(convert);
}
for(Convert con:convertedList)[
//Print in the required format
}
在上面的示例中,只要“TO_key1”过期,它就会通知我的程序,我将有机会在手动删除“key1”之前运行我的代码。
答案 1 :(得分:0)
使用标准OS Redis时,这是不可能的。但是,有一种方法可以做一些类似的事情而不会有太多麻烦。如果你停止使用Redis&#39;到期时间(至少对于那些你感兴趣的那些关键词&#34;挂钩&#34;)和管理到期时间#34;手动&#34;在您的代码中,您可以在到期事件之前/期间/之后做任何您想做的事情。
由于Redis提供开箱即用的关键级到期,因此人们通常会满足于此。在某些情况下,即在Set中过期的成员,唯一的方法是手动方法,但是当你需要更好的控制时,这种方法对常规键仍然有效。