Просмотр исходного кода

support now type list and check if a string is a number

master
Markus Bergholz 6 лет назад
Родитель
Сommit
e51c51ecdc
1 изменённых файлов: 35 добавлений и 10 удалений
  1. +35
    -10
      redis2json.lua

+ 35
- 10
redis2json.lua Просмотреть файл

@ -12,14 +12,18 @@ local function getType(k)
-- get type of input key
local t = redis.call("TYPE", k)
-- concat string for logging
-- logit("Key: " .. k .. "; Type: " .. t["ok"] )
logit("Key: " .. k .. "; Type: " .. t["ok"] )
return t["ok"]
end -- function getType
-- simple key for json string
local function key2json(key, value)
return ' "' .. key .. '": "' .. value .. '" '
if tonumber(value) ~= nil then
return ' "' .. key .. '": ' .. tonumber(value)
else
return ' "' .. key .. '": "' .. value .. '" '
end
end -- function key2json
@ -30,7 +34,7 @@ end -- function key2json
local k = redis.call("KEYS", "*")
-- jsonstring
local js = '{ '
local js = '{'
local var = {}
-- iterate over all keys
@ -44,15 +48,36 @@ for n = 1,(#k) do
-- serialize it into jsonstring
js = js .. key2json(k[n], var)
-- separate key value strings
if n < (#k) then
js = js .. ', '
else
js = js .. ' }'
end
end -- if t == "string"
elseif t == "list" then
-- get values of a list
var = redis.call("LRANGE", k[n], "0", "-1")
js = js .. ' "' .. k[n] .. '":['
for l = 1,(#var) do
if tonumber(var[l]) ~= nil then
js = js .. ' ' .. tonumber(var[l])
else
js = js .. ' "' .. var[l] .. '"'
end -- if
-- separate list values
if l < (#var) then
js = js .. ','
else
js = js .. '] '
end -- if
end -- for l
end -- if
-- separate key values
if n < (#k) then
js = js .. ','
else
js = js .. ' }'
end
end -- for

Загрузка…
Отмена
Сохранить