Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak zrobić GROUP BY w Redis

Możesz to zrobić

w skrypcie lua o nazwie 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 uzyskaj hash według sekwencji key0,val0,key1,val1, itd...

a potem możesz to nazwać tak:

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

będziesz miał :

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

więcej informacji na temat funkcji eval tutaj

edytuj: jak powiedział deltheil w komentarzu, w celu sprawdzenia tylko wartości i nie rób niepotrzebnego sprawdzania, możesz przesunąć pętlę for o 2, ponieważ renderowanie żądania skrótu to klucz,wartości,klucz,wartość,itd...:

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. Jak unieważnić części hierarchii (drzewa) danych w pamięci podręcznej Redis?

  2. Sesja NodeJS + ExpressJS + RedisStore jest niezdefiniowana

  3. Łączenie z Redis działającym w kontenerze Docker z komputera hosta

  4. ZRANGESTORE przed Redis 6.2.0

  5. Dane wiosenne Operacja Redis HGETALL