गलत तरीके से वैल्यू php की कुंजी रखने वाले WRONGTYPE ऑपरेशन


141

नमस्ते मैं रेडिस के साथ लारवेल का उपयोग कर रहा हूं। जब मैं विधि द्वारा एक कुंजी का उपयोग करने की कोशिश कर रहा हूं तो निम्न त्रुटि प्राप्त करें "गलत प्रकार के मान रखने वाले कुंजी के खिलाफ गलत संचालन"

कुंजी मूल्य तक पहुंचने के लिए मैं निम्नलिखित कोड का उपयोग कर रहा हूं -

मैं इस कोड का उपयोग रेडिस से डेटा प्राप्त करने के लिए करता हूं

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

जवाबों:


357

Redis 5 डेटा प्रकारों का समर्थन करता है। आपको यह जानना होगा कि प्रत्येक डेटा प्रकार के लिए एक महत्वपूर्ण मानचित्र किस प्रकार का मूल्य है, इसे पुनः प्राप्त करने का कमांड अलग है।

यहाँ मुख्य मूल्य को पुनः प्राप्त करने के आदेश दिए गए हैं:

  • यदि मान स्ट्रिंग का प्रकार है -> GET <key>
  • यदि मान हैश का है -> HGETALL <key>
  • यदि मान प्रकार सूचियों का है -> व्यवस्था <key> <start> <end>
  • यदि मान प्रकार सेट का है -> स्मेम्बर्स <key>
  • यदि मान टाइप किए गए सेटों का है -> ZRANGEBYSCORE <key> <min> <max>

TYPEएक कुंजी के लिए मैपिंग के प्रकार की जाँच करने के लिए कमांड का उपयोग करें :

  • प्रकार <key>

आपने दिन बचा लिया :-)
ज़िन मिन

8

इस त्रुटि का अर्थ है कि कुंजी "l_messages" द्वारा अनुक्रमित मूल्य प्रकार का नहीं है hash, बल्कि कुछ और है। आपने संभवतः इसे अपने कोड में पहले उस अन्य मान पर सेट किया है। GET से शुरू होने वाले विभिन्न अन्य मूल्य-सूचक आदेशों की कोशिश करें, यह देखने के लिए कि कौन सा काम करता है और आपको पता चल जाएगा कि वास्तव में यहाँ किस प्रकार का है।


8
वास्तव में, print($redis->TYPE($values));यह अनुमान के बिना अपने को बताएगा;)
इटमार हैबर

1
महान :) इस आदेश को नहीं जानते थे, इसका उपयोग कभी नहीं किया था। यहाँ प्रलेखन है: redis.io/commands/type
advance512
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.