Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Bagaimana melakukan GROUP BY di Redis

Anda bisa melakukan ini

dalam skrip lua bernama 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 dapatkan hash dengan urutan key0,val0,key1,val1, dll...

dan setelah Anda dapat menyebutnya seperti itu:

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

Anda akan memiliki :

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

informasi lebih lanjut untuk fungsi evaluasi di sini

edit : seperti yang dikatakan deltheil dalam komentar, untuk hanya memeriksa nilai dan tidak melakukan pemeriksaan yang tidak perlu, Anda dapat melangkahi for loop sebanyak 2 karena rendering permintaan hash adalah kunci,nilai,kunci,nilai,dll...:

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. Area Notifikasi dan Berita dengan menggunakan Redis

  2. tidak dapat terhubung ke penampung redis dari penampung aplikasi

  3. Menggunakan Redis untuk Antrian untuk Beberapa Aplikasi Laravel di Satu Server

  4. Apakah ada perintah di Redis untuk struktur data HASH yang mirip dengan MGET?

  5. Bagaimana cara menyimpan array hash di redis