【发布时间】:2014-10-23 05:23:01
【问题描述】:
redis 中有 1+ 亿个键。
现在我想得到 ALL python 中的键。
partkeys = redisclient.keys("abcd*")
会好的。
但是
keys = redisclient.keys("ab*")
将引发 ResponseError。
redis.exceptions.ResponseError: 键错误
和
keys = redisclient.keys("*")
会引发 ConnectionError。
redis.exceptions.ConnectionError:连接 demo.abcd.com:6397 时出现错误 111。连接被拒绝。
有什么帮助吗?
【问题讨论】:
-
你用的是什么版本的redis?如果 >= 2.8,请尝试
scan_iter()方法。 -
我没有得到redis的版本。但是 Redis 和 StrictRedis 的实例没有 scan_iter() 方法。
-
KEYS 是一个危险的命令 - 它在运行时会阻止所有其他操作,并且根据数据集,可能会消耗大量 RAM。你得到的连接错误就是因为这个。您必须像在第一个示例中那样将您的密钥空间“拆分”为小块并独立处理每个块......或者升级到 2.8+ 并使用 SCAN。
-
或者只是解析转储rdb...用python编写的解析器:github.com/sripathikrishnan/redis-rdb-tools
标签: python redis key sortedset