ऐसा कोई आदेश नहीं है, रेडिस हैश हैश के भीतर काम करता है, इसलिए एचएमजीईटी एक हैश के अंदर काम करता है और उस हैश में सभी फ़ील्ड देता है। एक से अधिक हैश में सभी फ़ील्ड को एक साथ एक्सेस करने का कोई तरीका नहीं है ।
हालाँकि आप प्रत्येक हैश पर कई HMGET उपयोगकर्ता कर सकते हैं और सभी फ़ील्ड प्राप्त कर सकते हैं। आप इन आदेशों को एक बार में निष्पादित करने के लिए पाइपलाइन कर सकते हैं।
विकल्प 1 भूतपूर्व। छद्म कोड में कार्यान्वयन
Pipeline p
List<String> = p.hgetall('key1', fields...);
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec();
विकल्प 2 अन्य विकल्प एक LUA स्क्रिप्ट लिखना और EVAL का उपयोग करके कॉल करना है
local array = {}
local keys = redis.call('KEYS', '<your pattern>')
for _,key in ipairs(keys) do
local val = redis.call('HGETALL', key)
array[#array + 1] = val
end
return array
लुआ स्किप्ट को बुलाओ
redis-cli EVAL "$(cat test.lua)" 0
1) 1) "field1"
2) "val"
2) 1) "field1"
2) "val"
3) "field2"
4) "val2"