Redis
 sql >> Database >  >> NoSQL >> Redis

Esiste un comando in Redis per la struttura dei dati HASH simile a MGET?

Non esiste un comando del genere, gli hash redis funzionano all'interno dell'hash, quindi HMGET funziona all'interno di un hash e fornisce tutti i campi in quell'hash. Non c'è nessun modo per accedere a tutti i campi in più hash in uno .

Tuttavia puoi utilizzare diversi HMGET su ogni hash e ottenere tutti i campi. puoi creare pipeline questi comandi da eseguire in una volta sola.

Opzione 1 Ex. implementazione in pseudocodice

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

Opzione 2 Un'altra opzione è scrivere uno script LUA e chiamarlo 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

Chiama lo script lua

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

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