#redis #redis-cli
#redis #redis-cli
Вопрос:
Я новичок в redis. Я пытаюсь выполнить приведенную ниже команду.
HSET 1000:123:1603872000 "totalscore":100 "uid":"1000:123:1603872000" "price": 1000 "points": 30
Но это дает мне ошибку ниже
(ошибка) Операция с НЕПРАВИЛЬНЫМ ТИПОМ ключа, содержащего неправильный тип значения
type 1000:123:1603872000
Это дает мне тип в виде строки. Как я могу установить значения строковых полей для строкового ключа в redis?
Ответ №1:
Синтаксис для хранения значений в хэш-карте в redis таков: hset hash_map_name ключ1 значение1 ключ2 значение2 ключ3 значение3
Вам не нужно разделять пару ключ-значение двоеточием. В приведенном ниже примере я сохраняю 3 ключа с именами name, website и age в хэш-карте с именем _my_hash_map.
127.0.0.1:6379> hset my_hash_map name Ankit website StackOverflow age 100
(integer) 3
127.0.0.1:6379> hgetall my_hash_map
1) "name"
2) "Ankit"
3) "website"
4) "StackOverflow"
5) "age"
6) "100"
127.0.0.1:6379>
Комментарии:
1. Да, но это снова дает мне (ошибку) операцию НЕПРАВИЛЬНОГО типа с ключом, содержащим неправильный тип значения. HSET 1000:123:1603872000 totalscore «100» uid «1000:123:1603872000» цена «1000». Но если я изменю ключ с 1000: 123: 1603872000 на 1000: 123: 160387200, никаких проблем. ТИП 1000:123:1603872000 — строка, а ТИП 1000:123:160387200 — хэш
2. HSET 1000:123:1603872000 totalscore «100» uid «1000:123: 1603872000» цена «1000» Это не дало никакой ошибки. Можете ли вы показать точную команду, которую вы ввели, и точное сообщение об ошибке?
3. HSET 1000:123:1603872000 общий балл «100» uid «1000:123:1603872000 » цена «1000» та же команда: (ошибка) Операция с НЕПРАВИЛЬНЫМ типом ключа, содержащего неправильное значение
4. это из-за какой-либо разницы в версии redis? Если я удалю последний 0 в ключе, я получу успех. Вот почему я проверил оба его типа. ТИП 1000:123:1603872000 — это строка, а ТИП 1000:123:160387200 — это хэш.
5. Можете ли вы запустить HGETALL 1000:123:1603872000 и посмотреть, каков результат? Если есть уже существующие данные, попробуйте удалить hasmap, выполнив del 1000:123:1603872000