2012-12-05 64 views

回答

4

簡短的回答是,你不能。這不是什麼redis的意思。 稍微長一點的答案是,您可以使用redis lua腳本和EVAL命令完成此操作。

隨着Redis的列表,如:

LPUSH mylist 1 2 3 4 5 6 7 

而且腳本sum.lua

local list = redis.call('lrange', KEYS[1], 0, -1) 
local sum = 0 
for i, val in ipairs(list) do 
    sum = sum + val 
end 

return sum 

你可以在命令行調用它,就像這樣:

$ redis-cli EVAL "$(cat sum.lua)" 1 mylist 
(integer) 28 

編輯:第三答案是@ DidierSpezia的評論,關於排列數據時的計算。通常,在使用redis時,您將根據想要查詢的方式來構造數據,而不是其他方式。也許你會做這樣的事情:

# Paying out salary 
redis> LPUSH employee:17:salaries 10000 
redis> HINCRBY total_salaries 17 10000 

# Fetching total salary to employee 17 

redis> HGET total_salaries 17 
"10000" 
+2

當然並且,爲了得到這個統計的最佳方法是,計算在即時而數據插入/刪除:這就像INCRBY命令的目的/ HINCRBY。 –