Python 使用REDIS py同时访问REDIS的两个客户端

Python 使用REDIS py同时访问REDIS的两个客户端,python,redis,Python,Redis,我有两个同时访问redis的redis py客户端。两个客户端都在运行无限循环。两个客户端也在查看相同的哈希。问题是,当我启动连续hgetall循环时,似乎无法再设置该值 第一个客户端正在执行连续hgetall while True: query = r.hgetall('myHash') for result in query: #do something with value1, value2 第二个客户端正在执行连续hset。如果我删除了第二个客户端,只是

我有两个同时访问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吗?

确切地说,这就是为什么不能在同一个哈希上
hset
hgetall
。是关于单线程性质的官方文档。是解释相同行为的相关问题。此外,如果您希望在
redis
之上实现并行化,这是一个指南。

准确地说,这就是为什么您不能在同一个哈希上
hset
hgetall
。是关于单线程性质的官方文档。是解释相同行为的相关问题。此外,如果您希望在
redis
的基础上实现并行化,请参阅本指南。

AFAIK,redis有自己的队列,它将按顺序运行。您可以将多个客户端连接到它,但它在自己的一端一次只运行一个命令。您遇到了什么问题?能否对您的Redis实例运行MONITOR以查看执行了哪些命令。好的,Redis有自己的队列,它将按顺序运行。您可以将多个客户端连接到它,但它在自己的一端一次只运行一个命令。您遇到了什么问题?可以对您的Redis实例运行MONITOR以查看执行了哪些命令。