redis.call
का जवाब इस तरह दिखने वाली तालिका के रूप में वापस आती है:{"ok": "string"}
(यदि प्रकार निश्चित रूप से एक स्ट्रिंग है)
इसलिए ठीक से जाँच करने के लिए, आपको अपना कोड इस में बदलना चाहिए:
local keyType = redis.call("TYPE", KEYS[1]).ok
और शेष कोड ठीक काम करेगा।
मुद्दा यह है:TYPE कमांड उन कुछ कमांडों में से एक है जो "सरल स्ट्रिंग" या "स्टेटस" रेडिस रिप्लाई लौटाते हैं (प्रतिक्रिया प्रकारों के लिए रेडिस प्रोटोकॉल स्पेक्स देखें)। रेडिस लुआ प्रलेखन में यह कहा गया है कि:
<ब्लॉकक्वॉट>रेडिस स्टेटस रिप्लाई -> लुआ टेबल जिसमें सिंगल ओके फील्ड है जिसमें स्टेटस है
यहाँ क्या हुआ है।