WRONGTYPE การทำงานกับคีย์ที่ถือค่า php ผิดประเภท


142

สวัสดีฉันใช้ Laravel กับ Redis เมื่อฉันพยายามเข้าถึงคีย์โดยใช้เมธอด get จากนั้นได้รับข้อผิดพลาด "WRONGTYPE Operation เทียบกับคีย์ที่ถือค่าผิดประเภท"

ฉันใช้รหัสต่อไปนี้เพื่อเข้าถึงค่าคีย์ -

ฉันใช้รหัสนี้เพื่อรับข้อมูลจาก redis

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

คำตอบ:


361

Redis รองรับข้อมูล 5 ประเภท คุณจำเป็นต้องทราบว่าคีย์แมปเป็นค่าประเภทใดสำหรับข้อมูลแต่ละประเภทคำสั่งในการดึงข้อมูลจะแตกต่างกัน

คำสั่งในการดึงค่าคีย์มีดังนี้

  • ถ้าค่าเป็นสตริงประเภท -> รับ <key>
  • ถ้าค่าเป็นประเภทแฮช -> HGETALL <key>
  • ถ้าค่าเป็นรายการประเภท -> lrange <key> <start> <end>
  • ถ้าค่าเป็นชุดประเภท -> smembers <key>
  • ถ้าค่าเป็นประเภทชุดที่จัดเรียง -> ZRANGEBYSCORE <key> <min> <max>

ใช้TYPEคำสั่งเพื่อตรวจสอบประเภทของค่าที่คีย์กำลังจับคู่กับ:

  • ชนิด <key>

1
คุณบันทึกวัน :-)
Zin Minn

8

ข้อผิดพลาดนี้หมายความว่าค่าที่จัดทำดัชนีโดยคีย์ "l_messages" ไม่ใช่ประเภท hashแต่เป็นอย่างอื่น คุณอาจตั้งเป็นค่าอื่นก่อนหน้านี้ในโค้ดของคุณ ลองใช้คำสั่ง value-getter อื่น ๆ เริ่มต้นด้วย GET เพื่อดูว่าคำสั่งใดใช้ได้ผลและคุณจะรู้ว่าประเภทใดอยู่ที่นี่


8
จริงๆแล้วprint($redis->TYPE($values));จะบอกให้คุณรู้โดยไม่ต้องเดา;)
Itamar Haber

1
เยี่ยมมาก :) ไม่รู้จักคำสั่งนี้ไม่เคยต้องใช้มัน นี่คือเอกสาร: redis.io/commands/type
advance512
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.