सबसे पहले, सबसे तेज़ तरीका यह सब EVAL के अंदर करना है।
अगला, सभी कुंजियों को पुनरावृत्त करने के लिए अनुशंसित दृष्टिकोण स्कैन है। यह KEYS
. की तुलना में तेज़ी से पुनरावृति नहीं करेगा , लेकिन रेडिस को बीच में कुछ अन्य क्रियाओं को संसाधित करने की अनुमति देगा, इसलिए यह समग्र अनुप्रयोग व्यवहार में मदद करेगा।
स्क्रिप्ट कुछ इस तरह होगी local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data
, लेकिन यह विफल हो जाएगा यदि आपके पास GET (जैसे सेट, सूचियाँ) के साथ दुर्गम कुंजियाँ हैं। आपको इसमें त्रुटि प्रबंधन जोड़ने की आवश्यकता है। यदि आपको छँटाई की आवश्यकता है, तो आप इसे सीधे LUA में या बाद में क्लाइंट साइड पर कर सकते हैं। दूसरा धीमा होगा, लेकिन रेडिस इंस्टेंस के अन्य उपयोगकर्ताओं को प्रतीक्षा नहीं करने देगा।
नमूना आउटपुट:
127.0.0.1:6370> eval "local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data" 0
1) 1) "a"
2) "aval"
2) 1) "b"
2) "bval"
3) 1) "c"
2) "cval"
4) 1) "d"
2) "dval"
5) 1) "e"
2) "eval"
6) 1) "f"
2) "fval"
7) 1) "g"
2) "gval"
8) 1) "h"
2) "hval"