Triggers 注册在发生指定(redis key,op)事件时要触发的LUA脚本
我可以将LUA脚本作为关系数据库中使用的触发器吗。 e、 例如,在使用键“TIMELIST”向列表追加或rpush之后,会触发一个lua脚本来对列表执行一些工作吗 我快速查看了REDIS文档中的lua脚本部分,发现该脚本似乎只能显式计算。我的想法不可能吗 分机: 如果上述想法是不可能的。我应该采取什么措施来解决这个问题。我有一个分类列表来存储每日配额。我用Triggers 注册在发生指定(redis key,op)事件时要触发的LUA脚本,triggers,lua,redis,Triggers,Lua,Redis,我可以将LUA脚本作为关系数据库中使用的触发器吗。 e、 例如,在使用键“TIMELIST”向列表追加或rpush之后,会触发一个lua脚本来对列表执行一些工作吗 我快速查看了REDIS文档中的lua脚本部分,发现该脚本似乎只能显式计算。我的想法不可能吗 分机: 如果上述想法是不可能的。我应该采取什么措施来解决这个问题。我有一个分类列表来存储每日配额。我用 > ZADD 'TIMELIST' <TS> <QUOTA> >ZADD“时间主义者” 要添加新的配额,请
> ZADD 'TIMELIST' <TS> <QUOTA>
>ZADD“时间主义者”
要添加新的配额,请使用其日期作为权重。我希望排序后的列表作为一个有界列表,只保留最后7天的配额。我不会在普通redis列表上使用LTRIM,因为配额在时间轴上可能有差距。哈希也不合适,因为出于某种原因,我必须让访问REDIS的应用程序看不到截断op
我是redis的新手。有什么建议吗?谢谢 不,那是行不通的。但是,您可以轻松地使用脚本执行操作(
LPUSH
,ZADD
,等等)以及任何其他类似触发器的逻辑 您可以使用删除旧元素
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREMRANGEBYRANK myzset 0 1
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "three"
2) "3"
redis>
关于这些“触发器”,Redis有一个有趣的发展。您可以通过以下方式实现您想要的: Redis密钥空间通知(在事件发生时得到通知-例如向集合/zset添加密钥)并运行内部Redis模块(版本5中新增) 这将在某些条件下执行ZREM from集合-有效地具有Redis“触发器” 从技术上讲,您可以只使用密钥空间通知选项来发送发布/订阅事件(在Redis中),但如果您没有该事件的订阅者,则可能会错过事件(Redis中的发布/订阅事件是不持久的)
缺点是您必须用C/C++代码编写该模块,并验证它是否正常工作。谢谢。看来你的建议是目前唯一的办法,是的。