Я хотел бы вставить данные в набор soretd в redis, используя python, чтобы выполнять сложные запросы, например, по диапазону и т.д.
import redis
redisClient = redis.StrictRedis(host='localhost', port=6379,db=0)
redisClient.zadd("players",1,"rishu")
но когда я запускаю вышеуказанный код кода, я получаю следующую ошибку:
AttributeError: 'str' object has no attribute 'items'
Что я делаю неправильно здесь. С помощью этой ссылки для refercne https://pythontic.com/database/redis/sorted%20set%20-%20add%20and%20remove%20elements
@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 ожидается диктофон с ключом, поскольку данные и значение - это оценка ZADD. Нет никаких изменений в возврате данных.
Думайте, что вы используете более новую версию библиотеки redis. Из документации здесь видно, что подпись метода изменилась. Думайте, что это сработает:
redisClient.zadd("players", rishu=1)
rediscleint.execute_command ("ZADD", "rishu", 1, "123"). Это работает... пытаясь понять, как добавлять элементы в отсортированные множества без использования функции execute_commnad.