簡體   English   中英

無法使用python在redis中使用ZADD(排序集)插入數據

[英]not able to insert data using ZADD(sorted set ) in redis using python

我想使用 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'

我在這里做錯了什么。使用此鏈接作為參考https://pythontic.com/database/redis/sorted%20set%20-%20add%20and%20remove%20elements

@TheDude 幾乎接近了。

來自(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,鍵作為數據,值是 ZADD 分數。 檢索數據沒有任何變化。

rediscleint.execute_command('ZADD', "rishu", 1, "123"). 這個有效......試圖弄清楚如何在不使用 execute_command 方法的情況下將元素添加到排序集中。

@divyanayan awasthi 回答:

rediscleint.execute_command('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_command('ZADD', "rishu",'nx' 1, "123")

在上面的代碼中,我們在 zadd 命令中添加了新參數是 nx(添加新項目)。 如果我們想更新有序集合成員,那么我們傳遞 'xx' 而不是 nx。

在 execute_command 中,我們可以運行以逗號分隔的相同 redis 命令。

也可以看看:

Redis 排序集命令

認為您正在使用較新版本的 redis 庫。 此處的文檔來看,方法簽名似乎已更改。 認為這會起作用:

redisClient.zadd("players", rishu=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM