sql >> Databáze >  >> NoSQL >> Redis

Jak udělat GROUP BY v Redis

Můžete to udělat

ve skriptu lua s názvem 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 získat hash podle sekvence key0,val0,key1,val1, atd...

a poté, co to můžete nazvat takto:

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

budete mít:

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

více informací o funkci eval zde

upravit: jak řekl deltheil v komentáři, pro kontrolu pouze hodnot a neprovádějte zbytečnou kontrolu můžete krokovat smyčku for o 2, protože vykreslení požadavku hash je klíč, hodnoty, klíč, hodnota, atd...:

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. Jak uložit a ukončit redis.conf?

  2. Redis ukládací seznam uvnitř hash

  3. Rozdíl mezi databázemi založenými na dokumentu a databázemi založenými na klíči/hodnotě?

  4. Jak přijímat události vypršení platnosti Redis pomocí uzlu?