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

Cách thực hiện GROUP BY trong Redis

Bạn có thể làm điều này

trong một tập lệnh lua có tên script.lua

local hash_val = redis.call('hgetall',KEYS[1])
local result = {}
for i = 0 , #hash_val do
    if hash_val[i] == ARGV[1] then
        table.insert(result,hash_val[i-1])
        table.insert(result,hash_val[i])
    end
end
return result

lua get hash theo chuỗi key0, val0, key1, val1, etc ...

và sau khi bạn có thể gọi nó như vậy:

redis-cli  eval "$(cat script.lua)" 1 "my_hash" 1

bạn sẽ có:

1) "foo"
2) "1"
3) "bar"
4) "1"

thêm thông tin cho hàm eval tại đây

chỉnh sửa: như đã nói deltheil trong nhận xét, để chỉ kiểm tra các giá trị và không kiểm tra quá mức, bạn có thể bước vòng lặp for bằng 2 vì hiển thị yêu cầu băm là khóa, giá trị, khóa, giá trị, v.v.:

local hash_val = redis.call('hgetall',KEYS[1])
local result = {}
for i = 2 , #hash_val, 2 do
    if hash_val[i] == ARGV[1] then
        table.insert(result,hash_val[i-1])
        table.insert(result,hash_val[i])
    end
end
return result



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis:có thể hết hạn một phần tử trong mảng hoặc tập hợp đã sắp xếp?

  2. redis:sao lưu dump.rdb

  3. Tự động hoàn thành Redis

  4. Muốn sử dụng Redis làm kho thống kê sự kiện

  5. Cơ sở dữ liệu Redis TTL