我正在使用Jedis java客户端进行redis。我的要求是,当有人通过jedisClient.lpush(“mylist”,“这是我的消息”)添加项目到列表,说 mylist 时,我需要获得通知。 这可能吗?
答案 0 :(得分:4)
是的,可以通过两种方式之一实现这一目标。
第一种方法是使用Redis'keyspace notifications。配置Redis以使用以下配置指令生成列表事件:
CONFIG SET notify-keyspace-events El
然后,订阅相关频道/频道。如果您只想订阅mylist
的更改,请执行以下操作:
SUBSCRIBE __keyevent@0__:mylist
或者,使用PSUBSCRIBE并监听事件以匹配与模式匹配的键名。
但请注意,keysapce通知不会提供实际的推送值。您可以使用Lua脚本作为替代方法并实现自己的通知机制。例如,使用以下脚本将自定义消息推送并发布到自定义渠道:
local l = redis.call("LPUSH", KEYS[1], ARGS[1])
redis.call("PUBLISH", "mylistnotif:" .. KEYS[1], "Pushed value " .. ARGS[1])
return l
确保“某人”使用该脚本执行实际的列表推送并订阅相关频道/频道。