Redis
 sql >> Base de données >  >> NoSQL >> Redis

Existe-t-il une commande dans Redis pour la structure de données HASH similaire à MGET ?

Il n'y a pas de commande comme ça, les hachages redis fonctionnent dans le hachage, donc HMGET fonctionne dans un hachage et donne tous les champs de ce hachage. Il n'y a aucun moyen d'accéder à tous les champs dans plusieurs hachages à la fois .

Cependant, vous pouvez utiliser plusieurs HMGET sur chaque hachage et obtenir tous les champs. vous pouvez canaliser ces commandes pour les exécuter en une seule fois.

Option 1 Ex. implémentation en pseudo code

Pipeline p
List<String> = p.hgetall('key1', fields...); 
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec(); 

Option 2 Une autre option consiste à écrire un script LUA et à l'appeler en utilisant 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

Appelez le script lua

redis-cli EVAL "$(cat test.lua)" 0

1) 1) "field1"
   2) "val"
2) 1) "field1"
   2) "val"
   3) "field2"
   4) "val2"