首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何收听1000到10,000个列表中的变化?

如何收听1000到10,000个列表中的变化?
EN

Stack Overflow用户
提问于 2016-01-24 03:07:54
回答 2查看 1K关注 0票数 3

我有1000到10,000个键存储在Redis中,它们的值类型是list。当一个新项目被添加到任何一个现有的列表中时,我需要通知我的golang程序。一旦收到通知,我需要生成一个新的goroutine并执行一个小操作。

我使用redigo作为redis连接池。

在不重载Redis实例的情况下,解决此问题的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-24 07:33:54

您可以启用Redis的键空间通知,并在您感兴趣的键/模式上订阅相关事件。

更多细节可以在文档中找到:http://redis.io/topics/notifications

票数 5
EN

Stack Overflow用户

发布于 2016-01-24 03:56:36

我还没有尝试过这种方法,但据推测,我将使用Redis的Lua来实现两个新命令-- MSR_PUSH和MSR_POP --它们将分别执行以下操作:

代码语言:javascript
复制
-- MSR_PUSH
redis.call("PUSH", KEYS[1], ARGV[1])
redis.call("PUBLISH", "notify", KEYS[1])

以及:

代码语言:javascript
复制
-- MSR_POP
local v = redis.call("POP", KEYS[1])
if v then
  redis.call("PUBLISH", "notify", KEYS[1])
end
return v

因此,这些Lua脚本会像通常一样更新列表,但也会将更新后的键名发布到notify /sub,这将允许一个监视脚本(golang)做一些事情。你也可以把它推到另一个队列上,然后进行长时间的投票。

此链接有更多关于Lua和Redis:https://www.redisgreen.net/blog/intro-to-lua-for-redis-programmers/的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34971769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档