Procházet zdrojové kódy

Implement memory efficient stat convert

tags/1.7.9
Igor Ippolitov před 5 roky
rodič
revize
6de2193c68
1 změnil soubory, kde provedl 17 přidání a 15 odebrání
  1. 17
    15
      lualib/lua_stat.lua

+ 17
- 15
lualib/lua_stat.lua Zobrazit soubor

@@ -45,29 +45,31 @@ local function convert_bayes_schema(redis_params, symbol_spam, symbol_ham, expi
-- KEYS[2]: hash key ('S' or 'H')
-- KEYS[3]: expire
local lua_script = [[
redis.replicate_commands()
local keys = redis.call('SMEMBERS', KEYS[1]..'_keys')
local nconverted = 0

for _,k in ipairs(keys) do
local elts = redis.call('HGETALL', k)
local cursor = redis.call('HSCAN', k, 0)
local neutral_prefix = string.gsub(k, KEYS[1], 'RS')
local real_key

for i,v in ipairs(elts) do

if i % 2 ~= 0 then
real_key = v
else
local nkey = string.format('%s_%s', neutral_prefix, real_key)
redis.call('HSET', nkey, KEYS[2], v)
if KEYS[3] and tonumber(KEYS[3]) > 0 then
redis.call('EXPIRE', nkey, KEYS[3])
local elts
while cursor[1] ~= "0" do
elts = cursor[2]
cursor = redis.call('HSCAN', k, cursor[1])
local real_key
for i,v in ipairs(elts) do
if i % 2 ~= 0 then
real_key = v
else
local nkey = string.format('%s_%s', neutral_prefix, real_key)
redis.call('HSET', nkey, KEYS[2], v)
if KEYS[3] and tonumber(KEYS[3]) > 0 then
redis.call('EXPIRE', nkey, KEYS[3])
end
nconverted = nconverted + 1
end
nconverted = nconverted + 1
end
end
end

return nconverted
]]


Načítá se…
Zrušit
Uložit