LUA:解析多行变量并切割所需字符串

我有一个包含Lua代码的nginx位置(与nginx lua-resty-redis一起使用):

location = /healthcheck {

  content_by_lua_block {

    local red = redis:new()
    used_mem_limit = 536870912

    -- 连接到redis
    ok,err = red:connect(ngx.var.redis_host,6379)
    如果不好,那么
        ngx.log(ngx.ERR,"Redis连接错误:",err)
        ngx.status = 500
        返回
    end

    -- 设置连接超时
    red:set_timeout(1000)

    -- 获取redis used_memory_rss
    缓存=红:info('memory')

    争辩不休的_used_memory=......

    --设置响应代码
    if(red_used_memory >= used_mem_limit)then
      http_code = 500
    elseif(red_used_memory < used_mem_limit)
      http_code = 200
    否则
      http_code = 500
    end

    ngx.status = http_code

  }

}

memory变量应该像这样:

# Memory
used_memory:105157968
used_memory_human:100.29M
used_memory_rss:110387200
used_memory_rss_human:105.27M
used_memory_peak:105219456
used_memory_peak_human:100.35M
used_memory_peak_perc:99.94%
used_memory_overhead:32290608
used_memory_startup:487168
used_memory_dataset:72867360
used_memory_dataset_perc:69.62%
total_system_memory:1044770816

我需要获取used_memory_rss的值,然后我才能将其与used_mem_limit进行比较。所以,我不知道如何完成red_used_memory = ...行。

点赞
用户936986
用户936986

有可能的值中似乎只有数字,因此使用简单的正则表达式,然后将结果字符串转换为数字:

red_used_memory = tonumber(memory:match('used_memory_rss:(%d+)'))

换行符无关紧要。

2018-02-02 16:47:00