यदि आप Redis EVAL
. देखें प्रलेखन आप देख सकते हैं कि रेडिस एक लुआ तालिका को रेडिस उत्तर में बदलने के लिए रेडिस द्वारा उपयोग किए जाने वाले नियम क्या हैं:
- लुआ टेबल (सरणी) -> रेडिस मल्टी बल्क रिप्लाई (लुआ एरे के अंदर फर्स्टनिल तक छोटा किया गया है, यदि कोई हो )
- लुआ टेबल सिंगल ओके फील्ड के साथ -> रेडिस स्टेटस रिप्लाई
- एकल त्रुटि फ़ील्ड के साथ लुआ तालिका -> रेडिस त्रुटि उत्तर
तो विशेष मामलों 2 और 3 को छोड़कर, रेडिस मानता है कि आपकी तालिका एक अनुक्रम (यानी सूची) है जिसका अर्थ है कि यह retv[1], retv[2], ...
पढ़ता है जब तक इसका सामना nil
. से नहीं हो जाता तत्व (यहां संबंधित स्रोत कोड अनुभाग है)।
यह बताता है कि क्यों retv["test"]
आपके मामले में अनदेखा कर दिया गया है।
अगर आप इसके साथ अपना कोड बदलते हैं:
local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv
फिर यह अतिरिक्त तत्व वापस आ जाता है:
1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000