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

Er der en kommando i Redis til HASH-datastruktur, der ligner MGET?

Der er ingen sådan kommando, redis hashes fungerer i hashen, så HMGET arbejder inde i én hash og giv alle felterne i hash. Der er ingen måde at få adgang til alle felterne i flere hashes på én .

Du kan dog bruge flere HMGET på hver hash og få alle felterne. du kan pipeline disse kommandoer til at udføre på én gang.

Mulighed 1 Eks. implementering i pseudokode

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

Mulighed 2 En anden mulighed er at skrive et LUA-script og kalde det ved hjælp af 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

Ring til lua sctipt

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

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


  1. ServiceStack.Net Redis:Lagring af relaterede objekter vs. relaterede objekt-id'er

  2. Sådan bruger du mongoose Promise - mongo

  3. hvordan kan man gemme en Json i redis med hashmap(HSET)

  4. Gem et billede i MongoDB ved hjælp af Node.js/Express og Mongoose