【发布时间】:2021-02-17 04:17:40
【问题描述】:
我正在 Redis 中构建一些非常大的查找表。我有一些简单的代码可以按预期工作,当循环使用hset() 为每个项目在我的 Redis 哈希(通过管道)中设置单个值时:
foo = {"1234": "5678", "abcd": "efgh", ... }
with self.db.pipeline() as pipe:
for foo in bar:
pipe.hset("lookup_table", foo["key"], foo["value"])
pipe.execute()
这对于大字典来说很慢。为了加快速度,我希望能够将多个项目设置为管道中的映射,而不必遍历它。随着hmset() 现在被弃用,hset() 似乎可以通过关键字 arg 接受映射。我试图做以下事情:
with self.db.pipeline() as pipe:
pipe.hset("lookup_table", mapping=foo)
pipe.execute()
但这会产生错误TypeError: hset() got an unexpected keyword argument 'mapping'。我是否错误地使用了hset()?还是我误以为hset()可以这样接受多个项目?
我正在使用 py-redis 3.4.1 和 Python 3.7.5。
【问题讨论】: