Python, redis ошибка wrong number of arguments for hset command

изучаю редис(версия 4.0.2) посредством применения на практике.
Мне нужно по ключу(user_id) хранить словарь настроек.
language: строка с кодом языка
status: строка с местоположением пользователя в меню
country: текущая страна где находится пользователь
currency: текущая валюта пользователя
И в процессе мне необходимо извлекать все или некоторые ключи, менять их, добавлять новые.
нашёл в интернете пример, как раз хорошо подходящий мне:

import redis
redis_db = redis.StrictRedis(host='localhost', port=6379, db=1, charset='utf-8', decode_responses=True)
user_id = 847641313
language = 'en'
redis_db.hset(user_id, mapping={"language": language , "status": 0, "counry":'lalalalend', "currency": 'RUB'})
redis_db.hset(user_id, status, 1) # изменение ключа status
redis_db.hset(user_id, mapping={"fav_food": "пицца", "fav_drink": "квас"}) #добавление новых ключей
a = redis_db.hget(user_id, "language") # вернуть значение ключа language

попробовал применить, выбрасывается исключение

redis.exeption.ResponseError: wrong number of arguments for hset command

Использовать команду .set не подходит так как словари как тип данных не допускаются.
Использвать команду .hmset тоже не получается
Вызывается предупреждение

redis.hmset is deprecated. Use redis.hset (команда устарела)

Пошёл читать документацию, но там про ключ mapping вообще ни слова.
подскажите пожалуйста что я делаю не так.
Спасибо


Ответы (2 шт):

Автор решения: CrazyElf

Если я правильно разобрался, для установки множества значений нужно использовать не hset, а hmset:

redis_db.hmset(user_id, mapping={"language": language , "status": 0, "counry":'lalalalend', "currency": 'RUB'})
redis_db.hset(user_id, status, 1) # изменение ключа status
redis_db.hmset(user_id, mapping={"fav_food: "пицца", "fav_drink": "квас"}) #добавление новых ключей

Но это касается версий Redis до 4.0.0, а после вообще-то hset должна работать со словарём, а hmset выдаёт предупреждение, что её использование устарело. Почему hset не работает - пока не могу понять.

→ Ссылка
Автор решения: Misato Katsuragi

Сам спросил - сам отвечаю.
OS windows 10 x64
redis 4.0.2
redis server - 3.0.504 (последний stable от MsOpenTech за 2016 год, новее не нашёл)

команда hset в таком виде будет вызывать исключение:

redis_db.hset(user_id, mapping={"language": "rus" , "status": 0, "counry":'lalalalend', "currency": 'RUB'})

а в таком будет:

redis_db.hset(user_id, mapping={"language": "rus"})
redis_db.hset(user_id, mapping={"status": 0})
redis_db.hset(user_id, mapping={"counry":'lalalalend'})
redis_db.hset(user_id, mapping={"currency": 'RUB'})

либо использовать hmset и игнорировать warning о устаревании команды.

→ Ссылка