1
我已阅读过多篇有关redis交易的文章。 我有一些包含消息的列表。我使用redis为这些消息生成自动递增ID。 这里就是我想要做的事:固定客户数量的Redis交易
- 阅读计数器的值,然后增量它。
- 将递增的计数器值放入消息的
Id
字段中,然后序列化消息。 - 将序列化消息推送到列表中。
所以计数器总是在对应的列表中保存最后一条消息的ID。我想锁定计数器密钥,以便其他请求无法读取INCR计数器,并将另一条消息推送到与最后一个ID冲突的列表中。
因为我想要有限数量的redis客户端,所以WATCH MULTI EXCEC无法实现,因为它是执行该事务的同一个客户端。而据我所知,WATCH MULTI EXCEC适用于多个redis客户端。
我想知道什么是这个问题的正确方法。我应该使用LUA脚本并让它序列化消息吗?
我想到的“风险”是列表中的最后一条消息可能没有与计数器相同的ID。 –
很确实,列表中消息的顺序不一定是正确的,没有原子性。如果这是一项要求,请与Lua一起去。 –