【发布时间】:2017-07-11 18:27:54
【问题描述】:
我有两个同时访问 REDIS 的 redis-py 客户端。两个客户端都在运行无限循环。两个客户端也在查看相同的哈希值。问题是,当我开始连续的 hgetall 循环时,我似乎无法再设置该值。
第一个客户端在做连续的hgetall
while True:
query = r.hgetall('myHash')
for result in query:
#do something with value1, value2
第二个客户端正在做连续的hset。如果我删除第二个客户端并手动设置新值,我仍然无法设置新值。
r.hset('myHash', 'value1', '23')
r.hset('myHash', 'value2', '17')
这是因为 REDIS 是单线程的,并且作为 hgetall 的客户端从不释放线程以允许 hset 吗?
【问题讨论】:
-
AFAIK,redis 有自己的队列,可以按顺序运行。您可以将多个客户端连接到它,但它一次只能运行 1 个命令。你遇到了什么问题?
-
您能否对您的 Redis 实例运行 MONITOR 以查看正在执行的命令。