Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在使用python的redis中使用ZADD(排序集)插入数据_Python_Search_Redis - Fatal编程技术网

无法在使用python的redis中使用ZADD(排序集)插入数据

无法在使用python的redis中使用ZADD(排序集)插入数据,python,search,redis,Python,Search,Redis,我想使用python将数据插入redis中的排序集,以执行诸如范围等复杂查询 import redis redisClient = redis.StrictRedis(host='localhost', port=6379,db=0) redisClient.zadd("players",1,"rishu") 但是当我运行上面的代码时,我得到如下错误 AttributeError: 'str' object has no attribute 'items' 我在这里做错了什么。使用此链接作

我想使用python将数据插入redis中的排序集,以执行诸如范围等复杂查询

import redis
redisClient = redis.StrictRedis(host='localhost', port=6379,db=0)

redisClient.zadd("players",1,"rishu")
但是当我运行上面的代码时,我得到如下错误

AttributeError: 'str' object has no attribute 'items'
我在这里做错了什么。使用此链接作为参考

rediscleint.execute_命令('ZADD','rishu',1',123”)。这个命令很有效……试图找出如何在不使用execute_命令的情况下将元素添加到排序集。

认为您使用的是较新版本的redis库。从文档中看,方法签名似乎已更改。我认为这是可行的:

redisClient.zadd(“玩家”,rishu=1)

@这段时间几乎就要结束了

从(redis py 3.0)开始的较新版本的redis,方法签名已更改。 与ZADD一起,MSET和MSETNX签名也发生了变化

旧签名是:

data = "hello world"
score = 1 
redis.zadd("redis_key_name", data, score) # not used in redis-py > 3.0
新签名为:

data = "hello world"
score = 1 

redis.zadd("redis_key_name", {data: score})
要一次添加多个,请执行以下操作:

data1 = "foo"
score1 = 10

data2 = "bar"
score2 = 20

redis.zadd("redis_key_name", {data1: score1, data2: score2})
不使用args/kwargs,而是使用dict,key作为数据,value是ZADD分数。
检索回数据时没有任何更改。

@divyanayan awasthi回答:

rediscleint.execute_命令('ZADD','rishu',1,“123”)

我们可以执行原始查询

进一步解释:

在redis cli中

>>> zadd rishu nx  1 "123"
# sorted set key = rishu 
# nx = new item 
# score = 1
# member = "123"
现在我们在python中的命令是

rediscleint.execute_命令('ZADD','rishu','nx'1',123”)

在上面的代码中,我们在zadd命令中添加了新参数,即nx(addnewitem)。 如果我们想更新排序集成员,那么我们将传递'xx'而不是nx

在execute_命令中,我们可以运行相同的redis命令,命令之间用逗号分隔

另请参见:


尝试了您共享的方法..得到以下错误类型错误:zadd()得到了一个意外的关键字参数“rishu”。谢谢你的回复。我有以下redis版本redis版本3.0.503。尝试了你提到的两种方法。得到了以下错误属性错误:模块“redis”没有属性“zadd”。你能用导入和redis Initialisation显示完整代码吗?对不起,我的错,我使用redis作为客户端应在客户端重新分配的引用。zadd(“redis\u key\u name,{data:score})你能试试redisClient.zadd()吗?非常感谢