Tidak ada perintah seperti itu, hash redis bekerja di dalam hash, jadi HMGET bekerja di dalam satu hash dan memberikan semua bidang dalam hash itu. Tidak ada cara untuk mengakses semua bidang dalam beberapa hash sekaligus .
Namun Anda dapat menggunakan beberapa HMGET pada setiap hash dan mendapatkan semua bidang. Anda dapat menyalurkan perintah ini untuk dijalankan dalam sekali jalan.
Opsi 1 Mantan. implementasi dalam kode semu
Pipeline p
List<String> = p.hgetall('key1', fields...);
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec();
Opsi 2 Opsi lainnya adalah menulis skrip LUA dan memanggilnya menggunakan 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
Hubungi lua sctipt
redis-cli EVAL "$(cat test.lua)" 0
1) 1) "field1"
2) "val"
2) 1) "field1"
2) "val"
3) "field2"
4) "val2"