не удается вставить данные с помощью ZADD (отсортированный набор) в Redis с использованием Python - PullRequest
0 голосов
/ 30 ноября 2018

Я хотел бы вставить данные в набор soretd в redis, используя python для выполнения сложных запросов, например, в диапазоне и т. Д.

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

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

, но когда я запускаю приведенный выше фрагмент кода, я получаю следующую ошибкуas

AttributeError: 'str' object has no attribute 'items'

Что я здесь не так делаю? воспользовался этой ссылкой для refercne https://pythontic.com/database/redis/sorted%20set%20-%20add%20and%20remove%20elements

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Думаю, вы используете более новую версию библиотеки redis.Из документации здесь похоже, что сигнатура метода изменилась.Думаю, это сработает:

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

0 голосов
/ 07 декабря 2018

@ TheDude почти закрыт.

В более новой версии redis из (redis-py 3.0) изменена подпись метода.Наряду с 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-оценка.Изменений в получении данных нет.

0 голосов
/ 30 ноября 2018

rediscleint.execute_command ('ZADD', "rishu", 1, "123"). Это работает ... пытаясь понять, как добавлять элементы в отсортированные наборы без использования execute_commnad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...