NO-SQL データベース Redis の列エントリの合計を取得するにはどうすればよいですか?
私は次のように意味します:
Select sum(salary) from Account;
NO-SQL データベース Redis の列エントリの合計を取得するにはどうすればよいですか?
私は次のように意味します:
Select sum(salary) from Account;
簡単に言えば、できません。それは、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
編集: 3番目の答えは、データを並べ替えるときに計算することに関する@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"