小编典典
采用 scan_iter()
scan_iter()优于keys()大量密钥,因为它为您提供了可以使用的迭代器,而不是尝试将所有密钥加载到内存中。
我的redis中有一个1B记录,而且我永远都无法获得足够的内存来一次返回所有密钥。
一对一扫描键
这是一个python代码段,scan_iter()用于从商店中获取与某个模式匹配的所有键,并一一删除它们:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("user:*"):
# delete the key
r.delete(key)
批量扫描
如果要扫描的密钥列表非常大(例如,大于100k的密钥),则分批扫描它们将更加高效,如下所示:
import redis
from itertools import izip_longest
r = redis.StrictRedis(host='localhost', port=6379, db=0)
# iterate a list in batches of size n
def batcher(iterable, n):
args = [iter(iterable)] * n
return izip_longest(*args)
# in batches of 500 delete keys matching user:*
for k