2017-01-18 3 views
0

私はmemcachedとnginxの両方を初めて使いました。私はmemcachedに値を保存しようとし、それを元に戻そうとしました。しかし、問題は、私がmemcacheサーバーから切断した場合、保存された値が削除されることです。Nginxからmemcachedに保存されたデータを取得する

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の中に予想される動作ですか?もしそうなら、1つのNginxリクエストからデータを保存し、そのデータを別のNginxリクエストから取得する方法はありますか?

+1

まあ、あなたは 'flush_all'を呼び出していますので、すべてを失いたくない場合は、初心者のためにそれをしないでください –

+0

ありがとう、これは私の問題を解決:) – maamaa

答えて

2

flush_all()を呼び出すと、memcacheはすべてをクリアするように指示します。接続間でデータを保持したい場合は、この呼び出しを削除します。

関連する問題