WRONGTYPE Operação contra uma chave que contém o tipo errado de valor php


141

Olá, estou usando o Laravel com Redis. Quando estou tentando acessar uma chave pelo método get, recebo o seguinte erro "Operação WRONGTYPE contra uma chave que contém o tipo errado de valor"

Estou usando o seguinte código para acessar o valor da chave -

eu uso esse código para obter dados de redis

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

Respostas:


357

O Redis suporta 5 tipos de dados. Você precisa saber para qual tipo de valor a chave é mapeada, como para cada tipo de dados, o comando para recuperá-la é diferente.

Aqui estão os comandos para recuperar o valor da chave:

  • se o valor for do tipo string -> GET <key>
  • se o valor for do tipo hash -> HGETALL <key>
  • se o valor for do tipo listas -> lrange <key> <start> <end>
  • se o valor for do tipo sets -> smembers <key>
  • se o valor for do tipo conjuntos classificados -> ZRANGEBYSCORE <key> <min> <max>

Use o TYPEcomando para verificar o tipo de valor para o qual uma chave está mapeando:

  • tipo <key>

Você salvou o dia :-)
Zin Minn 03/03

8

Este erro significa que o valor indexado pela chave "l_messages" não é do tipo hash, mas sim de outra coisa. Você provavelmente definiu esse outro valor anteriormente no seu código. Tente vários outros comandos de obtenção de valor, começando com GET, para ver qual deles funciona e você saberá que tipo está realmente aqui.


8
Na verdade, print($redis->TYPE($values));vai dizer-lhe para o seu sem as conjecturas;)
Itamar Haber

1
Ótimo :) Não conhecia esse comando, nunca tive que usá-lo. Aqui está a documentação: redis.io/commands/type
advance512
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.