我可以使用Lettuce管理redis通知吗?我无法找到任何示例或文档。当元素在Redis中过期时,我只需要在我的java代码中进行一些通知/回调。
让我举一个例子......对不起,读生菜医生不会帮助我(我已经花了一些时间)
想象一下,我有一个对象的命名空间,我执行get和set命令:
"ONLINEUSERS:userid"
我添加的用户将在一小时后过期:
syncCommands.setex("ONLINEUSERS:"+userid,3600, mapper.writeValueAsString(userObject));
如果在3600秒后密钥过期,我的java代码中是否有一个方法?
我的意思是......在文档中,命令是:
StatefulRedisPubSubConnection<String, String> connection = client.connectPubSub()
connection.addListener(new RedisPubSubListener<String, String>() { ... })
RedisPubSubAsyncCommands<String, String> async = connection.async();
RedisFuture<Void> future = async.subscribe("channel");
// application flow continues
String,String数组和&#34; channel&#34;的值是什么?参数匹配我的密钥命名空间的expire事件?
答案 0 :(得分:0)
我面临着类似的问题。
首先,您需要确保将Redis服务器配置为发布键空间事件通知。默认情况下,这是禁用的。通常,配置文件位于/etc/redis/redis.conf
中。要查看的属性称为notify-keyspace-events
。如果希望Redis服务器发布过期和已删除密钥的事件,则可以将Ex
之类的值传递给最后一个属性。应用配置更改后,请考虑重新启动Redis服务器。
第二,您需要从Redis客户端实例中以名称__keyevent@0__:expired
订阅频道。