2016-06-21 11 views
13

Witam Używam Laravel z Redis. Kiedy próbuję uzyskać dostęp do klucza metodą get, otrzymuję następujący komunikat "Operacja WRONGTYPE przeciwko kluczowi trzymającemu niewłaściwy rodzaj wartości "WRONGTYPE Operacja przeciwko kluczowi przechowującemu niewłaściwy rodzaj wartości php

używam następujący kod, aby uzyskać dostęp do wartości klucza -

używam tego kodu do pobierania danych z REDiS

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

Odpowiedz

3

Ten błąd oznacza, że ​​wartość indeksowane przez klawisz«l_messages»jest nie typu hash, ale rathe r coś innego. Prawdopodobnie ustawiłeś ją na inną wartość wcześniej w swoim kodzie. Wypróbuj różne polecenia getter wartości, poczynając od GET, aby zobaczyć, który z nich działa, a dowiesz się, jaki typ jest tutaj.

+3

Właściwie 'print ($ redis-> Typ (wartości $));' będzie powiedz to do siebie bez zgadywania;) –

+0

Świetnie :) Nie znałem tego polecenia, nigdy nie musiałem go używać. Oto dokumentacja: http://redis.io/commands/type – advance512

28

Redis obsługuje 5 typów typów danych. Musisz wiedzieć, jakiego rodzaju wartości klucz odwzorowuje, jak w przypadku każdego typu danych, komenda do pobrania jest inna.

Oto poleceń w celu odebrania wartość klucza:

  • jeśli wartość jest typu ciąg -> GET <key>
  • jeśli wartość jest typu hash -> HGETALL <key>
  • jeśli wartość jest typu listy -> lrange <key> <start> <end>
  • jeśli wartość jest typu zbiorów -> smembers <key>
  • jeśli wartość jest zestawów typu klasyfikowane -> ZRANGEBYSCORE 012 Komenda

sprawdzić typ wartości klucza mapowania:

  • typu <key>