【问题标题】:Two Clients Accessing REDIS Simultaneously using redis-py两个客户端同时访问redis使用redis-py
【发布时间】: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 以查看正在执行的命令。

标签: python redis


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2014-04-11
    • 1970-01-01
    • 2020-07-03
    相关资源
    最近更新 更多