sql >> Database teknologi >  >> NoSQL >> Redis

Sådan laver du GROUP BY i Redis

Du kan gøre dette

i et lua-script ved navn 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 ved sekvens nøgle0, val0, nøgle1, val1 osv...

og efter du kan kalde det sådan:

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

du vil have:

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

mere information om eval-funktionen her

rediger: som sagt deltheil i kommentar, for kun at kontrollere værdierne og ikke foretage unødvendige check, kan du trin for-løkken med 2, fordi gengivelsen af ​​en hash-anmodning er nøgle, værdier, nøgle, værdi, osv...:

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. Mongodb vil ikke starte

  2. Hvor ofte skal jeg åbne/lukke min Booksleeve-forbindelse?

  3. MongoDb - Skift type fra Int til Double

  4. hvordan læser du alle de bytes der kommer på en tcp-forbindelse?