Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Có lệnh nào trong Redis cho cấu trúc dữ liệu HASH tương tự như MGET không?

Không có lệnh nào như vậy, các hàm băm redis hoạt động trong hàm băm, vì vậy HMGET hoạt động bên trong một hàm băm và cung cấp tất cả các trường trong hàm băm đó. Không có không có cách nào để truy cập tất cả các trường ở nhiều hàm băm .

Tuy nhiên, bạn có thể sử dụng một số HMGET trên mỗi hàm băm và lấy tất cả các trường. bạn có thể chuyển các lệnh này để thực thi trong một lần.

Tùy chọn 1 Bán tại. triển khai trong mã giả

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

Tùy chọn 2 Tùy chọn khác là viết một tập lệnh LUA và gọi tập lệnh đó bằng 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

Gọi cho sctipt 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. Cách giữ cho máy chủ redis hoạt động

  2. Khi nào tắt Trang khổng lồ trong suốt để chỉnh sửa

  3. Sự khác biệt giữa khu vực và BoundBox từ mã nguồn của Redis

  4. ngoại lệ lồng nhau là redis.clients.jedis.exceptions.JedisConnectionException:Không thể lấy tài nguyên từ nhóm

  5. Những trường hợp sử dụng nào mà Redis được ưu tiên hơn Aerospike?