sql >> Databáze >  >> NoSQL >> Redis

Existuje v Redis příkaz pro datovou strukturu HASH podobný MGET?

Žádný takový příkaz neexistuje, redis hashe fungují v rámci hashe, takže HMGET pracuje uvnitř jednoho hashe a dává všechna pole v tomto hashu. Neexistuje žádný způsob, jak získat přístup ke všem polím ve více hash na jedné .

Můžete však použít několik HMGET na každý hash a získat všechna pole. tyto příkazy můžete zkombinovat tak, aby byly provedeny najednou.

Možnost 1 Př. implementace v pseudo kódu

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

Možnost 2 Další možností je napsat LUA skript a zavolat jej pomocí 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

Zavolejte lua sctipt

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

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


  1. Přetrvává Redis data?

  2. Aplikační mezipaměť v.s. Úsporná mezipaměť druhé úrovně, kterou použít?

  3. Umožňuje Redis pouze reprezentaci řetězce, ale ne číselnou hodnotu

  4. autentizace mongo z příkazového řádku se nezdaří