我刚接触redis集群。我有一个9节点的集群,我想创建一个python应用程序来模拟商店库存。
我正在尝试创建一个原子事务,在该事务中,我减少库存(我称之为数量)并增加某个项目(键)的已售出(npuchased)数量。
我使用的是这样一个管道,所以当有人试图购买一个项目时,它会检查库存,然后减少数量,并增加一次到服务器的采购。
def buy_item(r: RedisCluster, item_id: int) -> None:
with r.pipeline() as pipe:
while True:
try:
pipe.watch(item_id)
amount_left = r.hget(item_id, 'quantity')
# in stock
if amount_left > 0:
pipe.multi()
pipe.hincrby(item_id, "quantity", -1)
pipe.hincrby(item_id, "npurchased", 1)
pipe.execute()
break
else:
pipe.unwatch()
raise Exception('Out of Stock')
except WatchError:
print('watch error')
我使用的是rediscluster模块,似乎没有办法在集群上使用手表(只是模块中没有实现)。有没有其他方法来编写这个代码来处理这个模块,或者有更好的python模块来处理redis集群?
我也一直在学习这个教程,所以如果代码看起来很熟悉,那么你可以感谢这些家伙。他们是最真实的
暂无答案!
目前还没有任何答案,快来回答吧!