我使用Redis
作为不同应用程序发行版之间的集中内存数据存储
当我的应用程序的所有发行版都在同一个键上运行时,我担心会出现并发的情况。举个例子:
THIS_DISTRIBUTION_NAME = "Alpha1"
alive_distributions = redis.hmget('alive_distributions') # {"Charlie1": 1623234874}
alive_distributions[THIS_DISTRIBUTION_NAME] = int(time.time()) # {"Charlie1": 1623234874,"Alpha1": 1623234875}
redis.hmset('alive_machines', alive_distributions)
如果在Alpha1的hmget
和hmset
操作之间更新Charlie1,则会导致数据不一致
如何在没有并发的情况下执行安全的、类似事务的字典更新
Redis支持transactions,我将专门研究文档的check-and-set部分。乐观地说,这正是你所需要的
更新#1
假设
redis-py
作为您的redis客户端,您可以执行以下操作:您感兴趣的操作可以包装在MULTI/EXEC事务中,以确保两个字段都已更新或没有更新。 您需要的命令itslef是zadd命令。事实上,使用zadd comand,您可以在一段时间后自动对预设值进行索引(更新)
相关问题 更多 >
编程相关推荐