从Nginx获取memcached保存的数据

我对memcached和nginx都很新。我尝试在memcached中保存一个值,然后尝试获取它。但问题是,如果我断开与memcache服务器的连接,那么保存的值就会被删除。

function databaseFunctions.save(key, value)

    memc, err = connectDatabase();

    ngx.say("保存前的值: " .. value)
    local success, err = memc:set(key, value)

    local value, flags, err = memc:get(key)
    ngx.say("获取的保存值: " .. value);

    memc:set_keepalive(5000, 1)
    memc:close();

    memc, err = connectDatabase();
    local value, flags, err = memc:get(key)
    ngx.say("再次获取保存的值和错误: ")
    ngx.say(value);
    ngx.say(err)

    return success, err;
end

connectDatabase = function()

    local memcached = require "resty.memcached"
    local memc, err = memcached:new()

    memc:set_timeout(1000)

    local ok, err = memc:connect(databaseHost, databasePort)
    local ok, err = memc:flush_all()

    return memc, nil;
end

输出:

保存前的值: eyJhZGRyZXNzIjp7ImZv
获取的保存值: eyJhZGRyZXNzIjp7ImZv
再次获取保存的值和错误:
nil
nil

这是memcached中的预期行为吗?如果是这样,我该如何保存从一个Nginx请求获取的数据,以便在另一个Nginx请求中获取该数据?

点赞
用户1806780
用户1806780

在你的 connect 函数中,你正在调用 flush_all() 函数,这告诉 memcache 清除所有内容。如果你想在连接之间保留数据,请删除此调用。

2017-01-18 05:54:12