繁体   English   中英

Python、redis:如何一次设置多个键值对

[英]Python, redis: How do I set multiple key-value pairs at once

我有两个列表 keys= [k0,k1, ....kn] vals= [v0,v1, ....vn]

我可以通过以下多个步骤在 redis 上设置这些键值: for i in range(0,len(keys)): redis_con.set(keys[i], vals[i])但这是多个集合操作。 我怎样才能在一个异步步骤中做到这一点?

keys= ["k0","k1"] 
vals= ["v0","v1"]
# use zip or izip based on py 
res = set(zip(keys, vals))
print res
>>> set([('k0', 'v0'), ('k1', 'v1')])

您也可以使用以下自定义方法进行操作:

a = [["b", "k", "a"], ["c", "m", "a"], ["a", "j","c"]]
b = [["k","a", "l"], ["l", "f", "c"], ["c", "d", "b"]]

def get_sets(*args):
    final = []
    for v in args:
        for j in v:
            final.append(set(j))
        yield final
        final = []

print(list(get_sets(a,b))) 

输出:

[
  [
   {'b', 'k', 'a'}, {'c', 'a', 'm'}, {'c', 'j', 'a'}
  ],
  [
   {'l', 'k', 'a'}, {'c', 'f', 'l'}, {'c', 'd', 'b'}
  ]
]

假设您要对set ops进行一次redis调用:

pipe = redis_con.pipeline()
for i in range(0,len(keys)):
  pipe.set(keys[i], vals[i])
pipe.execute()

对于Django人在这里登陆,如果你使用的是django-redis,你可以使用.set_many()方法。

from django.core.cache import cache
my_dict = {'key1': 'val1', 'key2': 'val2', 'key3'}
cache.set_many(my_dict, timeout=60*60)

这将在缓存中创建 3 个键。 在内部它使用redis 管道

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM