Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Existe um comando no Redis para estrutura de dados HASH semelhante ao MGET?


Não existe nenhum comando assim, redis hashes funcionam dentro do hash, então HMGET trabalha dentro de um hash e fornece todos os campos nesse hash. Não há como acessar todos os campos em vários hashes em um .

No entanto, você pode usar vários HMGET em cada hash e obter todos os campos. você pode canalizar esses comandos para serem executados de uma só vez.

Opção 1 Ex. Implementação em pseudocódigo
Pipeline p
List<String> = p.hgetall('key1', fields...); 
List<String> = p.hgetall('key2', fields...);
List<String> = p.hgetall('key3', fields...);
p.exec(); 

Opção 2 Outra opção é escrever um script LUA e chamá-lo 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

Chame o sctipt da lua
redis-cli EVAL "$(cat test.lua)" 0

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