Lua в redis cli - посчитать размер ключей в redis

Пробую на lua посчитать размер ключей

  local cursor = "0"
  local all_keys = {}
  local memory_usage_results = {}

  repeat
      local result = redis.call('SCAN', cursor)
      cursor = result[1]
      for _, key in ipairs(result[2]) do
          table.insert(all_keys, key)
          local usage = redis.call('MEMORY', 'USAGE', key)
          table.insert(memory_usage_results, {key = key, usage = usage})
      end
  until cursor == "0"

  return memory_usage_results

Но вывод redis-cli --eval script.lua

1) (empty array)
2) (empty array)

Как правильно получить массив?

да и

local memory_usage_results = {}   
          
memory_usage_results['aa'] = '33'     
                            
return  memory_usage_results

возвращает (empty array)


Ответы (1 шт):

Автор решения: des1roer
local total = {}
local keys = redis.call('KEYS', '*')
local v2 = {}
for _, key in ipairs(keys) do
    local prefix = nil
    local reg = ''

    if prefix == 'v2_' then
        v2[key] = key
    end

    if prefix then
        total[prefix] = total[prefix] or { size = 0, count = 0 }
        local usage = redis.call('MEMORY', 'USAGE', key)
        total[prefix].count = total[prefix].count + 1
        total[prefix].size = total[prefix].size + usage
        total[prefix].reg = reg
    end
end

local json_result = cjson.encode({total, v2})
redis.call('SET', 'scan:key', json_result)

return 100

как решил по итогу - сохраняю данные в redis

→ Ссылка