sql >> Base de Datos >  >> NoSQL >> Redis

¿Existe un comando en Redis para la estructura de datos HASH similar a MGET?

No hay un comando como ese, los hashes redis funcionan dentro del hash, por lo que HMGET funciona dentro de un hash y proporciona todos los campos en ese hash. No hay forma de acceder a todos los campos en múltiples hashes a la vez .

Sin embargo, puede usar varios HMGET en cada hash y obtener todos los campos. puede canalizar estos comandos para ejecutarlos de una sola vez.

Opción 1 Ex. implementación en pseudocódigo

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

Opción 2 Otra opción es escribir un script LUA y llamarlo usando 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

Llama al lua sctipt

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

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