間違った種類の値を保持しているキーに対するWRONGTYPE操作php


141

こんにちは私はRedisでLaravelを使用しています。getメソッドでキーにアクセスしようとすると、次のエラー「間違った種類の値を保持するキーに対するWRONGTYPE操作」が発生します。

次のコードを使用してキー値にアクセスしています-

私はこのコードを使用してredisからデータを取得します

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

回答:


357

Redisは5つのデータ型をサポートしています。キーがどのタイプの値にマップするかを知る必要があります。各データタイプについては、それを取得するコマンドは異なります。

キー値を取得するコマンドは次のとおりです。

  • 値が文字列型の場合-> GET <key>
  • 値のタイプがハッシュの場合-> HGETALL <key>
  • 値がリスト型の場合-> lrange <key> <start> <end>
  • 値のタイプがセットの場合-> smembers <key>
  • 値がソート済みセット型の場合-> ZRANGEBYSCORE <key> <min> <max>

TYPEコマンドを使用して、キーがマッピングされている値のタイプを確認します。

  • タイプ <key>

あなたはその日を救った:-)
Zin Minn

8

このエラーは、キー「l_messages」によってインデックスが付けられた値がタイプhashではなく、何か別のものであることを意味します。コードの前の方で、おそらく他の値に設定しているでしょう。GETから始めて、他のさまざまな値取得コマンドを試して、どのコマンドが機能するかを確認すると、実際にどのタイプがここにあるかがわかります。


8
実際にprint($redis->TYPE($values));は、当て推量なしでそれをあなたに伝えます;)
Itamar Haber

1
素晴らしい:)このコマンドを知らなかった、それを使用する必要がなかった。ドキュメントは次のとおり
advance512
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.