sql >> Databasteknik >  >> NoSQL >> Redis

Hur man gör GROUP BY i Redis

Du kan göra detta

i ett lua-skript som heter 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 få hash genom sekvens nyckel0, val0, nyckel1, val1, etc...

och efter att du kan kalla det så:

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

du kommer att ha:

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

mer information om evalfunktionen här

redigera: som sagt deltheil i kommentaren, för att bara kontrollera värdena och inte göra onödiga kontroller kan du stega for-slingan med 2 eftersom renderingen av en hash-förfrågan är nyckel, värden, nyckel, värde, etc...:

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. MongoDbs $set-motsvarighet i dess java-drivrutin

  2. Django ValueError:Ingen rutt hittades för sökväg 'ws/chat//'

  3. MongoDB-as-a-Service i ditt eget Amazon AWS-konto

  4. Mongoose, uppdatera värden i array av objekt