WRONGTYPE Operation against a key holding the wrong kind of value php

前端 未结 3 446
时光说笑
时光说笑 2020-12-22 16:01

Hi I am using Laravel with Redis .When I am trying to access a key by get method then get following error \"WRONGTYPE Operation against a key holding the wrong kind of value

相关标签:
3条回答
  • 2020-12-22 16:17

    This error means that the value indexed by the key "l_messages" is not of type hash, but rather something else. You've probably set it to that other value earlier in your code. Try various other value-getter commands, starting with GET, to see which one works and you'll know what type is actually here.

    0 讨论(0)
  • 2020-12-22 16:22

    Redis supports 5 data types. You need to know what type of value that a key maps to, as for each data type, the command to retrieve it is different.

    Here are the commands to retrieve key value:

    • if value is of type string -> GET <key>
    • if value is of type hash -> HGETALL <key>
    • if value is of type lists -> lrange <key> <start> <end>
    • if value is of type sets -> smembers <key>
    • if value is of type sorted sets -> ZRANGEBYSCORE <key> <min> <max>

    Use the TYPE command to check the type of value a key is mapping to:

    • type <key>
    0 讨论(0)
  • 2020-12-22 16:23

    I faced this issue when trying to set something to redis. The problem was that I previously used "set" method to set data with a certain key, like

    $redis->set('persons', $persons)
    

    Later I decided to change to "hSet" method, and I tried it this way

    foreach($persons as $person){
        $redis->hSet('persons', $person->id, $person);
    }
    

    Then I got the aforementioned error. So, what I had to do is to go to redis-cli and manually delete "persons" entry with

    del persons
    

    It simply couldn't write different data structure under existing key, so I had to delete the entry and hSet then.

    0 讨论(0)
提交回复
热议问题