Kaynağa Gözat

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

master
Markus Bergholz 5 yıl önce
ebeveyn
işleme
e51c51ecdc
1 değiştirilmiş dosya ile 35 ekleme ve 10 silme
  1. +35
    -10
      redis2json.lua

+ 35
- 10
redis2json.lua Dosyayı Görüntüle

@@ -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



Yükleniyor…
İptal
Kaydet