Redis CLI — операция с НЕПРАВИЛЬНЫМ ТИПОМ ключа, содержащего неправильный тип значения

#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