Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Czy istnieje polecenie w Redis dla struktury danych HASH podobnej do MGET?

Nie ma takiego polecenia, skróty redis działają w obrębie hasza, więc HMGET działa w jednym haszu i podaje wszystkie pola w tym haszu. Nie ma nie ma możliwości uzyskania dostępu do wszystkich pól w wielu skrótach jednocześnie .

Możesz jednak użyć kilku HMGET w każdym hashu i uzyskać wszystkie pola. możesz potoku te polecenia, aby wykonać je za jednym razem.

Opcja 1 Były. implementacja w pseudokodzie

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

Opcja 2 Inną opcją jest napisanie skryptu LUA i wywołanie go za 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

Zadzwoń do skryptu lua

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. redis HLL za dużo fałszywych alarmów

  2. Redis i Memcache czy po prostu Redis?

  3. Konwencje nazewnictwa kluczy Redis?

  4. Jaki jest sens wielu baz danych Redis?

  5. Wydawca Node redis zużywa zbyt dużo pamięci