【发布时间】:2017-05-23 20:53:35
【问题描述】:
我已经阅读了多篇关于 redis 事务的文章。 我有一些包含消息的列表。我使用 redis 为这些消息生成自动增量 ID。 这是我正在尝试做的事情:
- 读取计数器值,然后对其进行 INCR。
- 将递增后的计数器值放入消息的
Id字段中,然后序列化消息。 - 将序列化的消息推送到列表中。
所以计数器总是在相应的列表中保存最后一条消息的 ID。我想在计数器键上加个锁,这样其他请求就无法读取和增加计数器并将另一条消息推送到与最后一个 ID 冲突的列表中。
由于我希望拥有有限数量的 redis 客户端,因此无法实现 WATCH MULTI EXCEC,因为它是同一个客户端进行事务。据我所知,WATCH MULTI EXCEC 适用于您有多个 redis 客户端的情况。
我想知道解决这个问题的正确方法是什么。我应该使用 LUA 脚本并让它序列化消息吗?
【问题讨论】:
标签: redis