Sameera Kumarasingha
Sameera Kumarasingha

Reputation: 2988

Get memcached saved data from Nginx

I'm new to both of memcached and nginx. I tried to save a value in memcached and tried to retrieve it back. But the problem is if i disconnected from memcache server, then the saved value get deleted.

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

output:

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

Is this a expected behaviour in memcached? If so how do i save data from one Nginx request and get that data back from another Nginx request?

Upvotes: 0

Views: 543

Answers (1)

Sami Kuhmonen
Sami Kuhmonen

Reputation: 31203

In your connect function you are calling flush_all() which tells memcache to clear everything out. If you want to keep the data between connections remove this call.

Upvotes: 2

Related Questions