【问题标题】:Get memcached saved data from Nginx从 Nginx 获取 memcached 保存的数据
【发布时间】:2017-01-18 05:41:19
【问题描述】:

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

function databaseFunctions.save(key, value)

    memc, err = connectDatabase();

    ngx.say("Before Save value: " .. value)
    local success, err = memc:set(key, value)

    local value, flags, err = memc:get(key)
    ngx.say("Getting saved value: " .. value);

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

    memc, err = connectDatabase();
    local value, flags, err = memc:get(key)
    ngx.say("Getting saved value and err again: ")
    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

输出:

Before Save value: eyJhZGRyZXNzIjp7ImZv
Getting saved value: eyJhZGRyZXNzIjp7ImZv
Getting saved value and err again: 
nil
nil

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

【问题讨论】:

  • 好吧,你打电话给flush_all,所以如果你不想失去一切,就不要这样做
  • 谢谢,这解决了我的问题:)

标签: nginx lua memcached


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多