Redis
 sql >> база данни >  >> NoSQL >> Redis

Как да направите GROUP BY в Redis

Можете да направите това

в lua скрипт с име 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 получава хеш по последователност key0,val0,key1,val1 и т.н....

и след това можете да го наречете така:

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

ще имате :

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

повече информация за функцията eval тук

редактиране: както каза deltheil в коментар, за да проверите само стойностите и да не правите ненужна проверка, можете да застъпите цикъла for с 2, защото изобразяването на хеш заявка е ключ, стойности, ключ, стойност и т.н...:

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. Redis:Сортирайте и вземете n съседни ключове

  2. Има ли някакъв начин да се работи със сесии без заключване на ASP.Net MVC сайт?

  3. Redis запазва ли данните?

  4. Django - Как да използвам асинхронна опашка от задачи с целина и redis

  5. Свързване с RedisToGo чрез Node.JS