Redis
 sql >> база данни >  >> NoSQL >> Redis

Има ли команда в Redis за HASH структура от данни, подобна на MGET?

Няма такава команда, хешовете на redis работят в хеша, така че HMGET работи в един хеш и дава всички полета в този хеш. Няма начин за достъп до всички полета в множество хешове в едно .

Въпреки това можете да използвате няколко HMGET за всеки хеш и да получите всички полета. можете да пренасочите тези команди за изпълнение наведнъж.

Опция 1 напр. реализация в псевдокод

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

Вариант 2 Друга възможност е да напишете LUA скрипт и да го извикате с помощта на 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

Обадете се на lua sctipt

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. Каква е разликата между StackExchange.Redis и StackExchange.Redis.StrongName?

  2. Първи стъпки с Redis

  3. Целина с множество django сайтове

  4. Предайте файла към Активна работа / фонова работа

  5. Производителност на Redis срещу Disk в приложение за кеширане