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