WRONGTYPE Операция с ключом, содержащим неправильное значение php


142

Привет, я использую Laravel с Redis. Когда я пытаюсь получить доступ к ключу с помощью метода get, получаю следующую ошибку: «WRONGTYPE Operation против ключа, содержащего неправильное значение»

Я использую следующий код для доступа к значению ключа -

я использую этот код для получения данных из Redis

$values = "l_messages";
$value = $redis->HGETALL($values);
print($value);

Ответы:


363

Redis поддерживает 5 типов данных. Вам нужно знать, какому типу значения сопоставляется ключ, поскольку для каждого типа данных команды для его получения различаются.

Вот команды для получения значения ключа:

  • если значение имеет строковый тип -> GET <key>
  • если значение имеет тип hash -> HGETALL <key>
  • если значение относится к спискам типов -> lrange <key> <start> <end>
  • если значение типа set -> smembers <key>
  • если значение имеет тип сортированных наборов -> ZRANGEBYSCORE <key> <min> <max>

Используйте TYPEкоманду, чтобы проверить тип значения, которому сопоставлен ключ:

  • тип <key>

1
Вы спасли положение :-)
Зин Минн

8

Эта ошибка означает, что значение, индексируемое ключом l_messages, не относится к типу hash, а скорее к чему-то другому. Вероятно, вы уже установили это другое значение ранее в своем коде. Попробуйте различные другие команды получения значений, начиная с GET, чтобы увидеть, какая из них работает, и вы узнаете, какой тип здесь на самом деле.


8
На самом деле, print($redis->TYPE($values));скажу это вам без догадок;)
Итамар Хабер

1
Отлично :) Не знал эту команду, никогда не использовал ее. Вот документация: redis.io/commands/type
advance512
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.