redis でメモリ使用量の大きいキーを探したときに使用したスクリプトをここにメモします。
redis と lua について
redis は、サーバー上で lua スクリプトを実行させることができます。
実装
コマンド
$ redis-cli --eval mem_usage.lua | head -200
スクリプト
local keys = redis.call('KEYS', '*') local result = {} for _, key in ipairs(keys) do local mem_usage = redis.call('MEMORY', 'USAGE', key) table.insert(result, {key, mem_usage}) end table.sort(result, function(a, b) return a[2] > b[2] end) for _, entry in ipairs(result) do redis.log(redis.LOG_NOTICE, entry[1] .. " " .. entry[2]) end return result