1

これがまったくできるかどうかはわかりません。

3秒後にmemcacheを削除するようにDalliを設定しようとしています(実験のため)


    dalli = Dalli::Client.new
    dalli.add("test1","value", 3)
    dalli.get("test1").should eql "value"

    sleep(10)
    dalli.get("test1").should eql nil


コードでは、TTL を 3 秒に設定しました。3 秒後に「test1」が削除されることを期待していますが、明らかにそうではありません。したがって、テストは 2 番目のアサーションで失敗します。一定時間後にキー/値を期限切れにするようにダリに依頼するにはどうすればよいですか?

どうもありがとう。

4

2 に答える 2

0

キーを明示的に削除するには、deleteを呼び出すか、TTLを介して暗黙的にのみ削除できます。

これは、「test1」以外の別のキーで発生しますか?'add'コマンドを'set'コマンドに変更してみてください。addコマンドは条件付きであり、値がまだ存在しない場合にのみ値を設定します。TTLを指定せずに、以前にそのキーをすでに設定している可能性はありますか(提供したコードからは可能性が低いですが)?TTLを指定しなかった場合、アイテムは無期限にキャッシュされます。

于 2012-01-08T21:40:12.877 に答える
0

以下を session_store.rb 初期化子に入れます

Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 20.minutes

これにより、20 分後にキャッシュが期限切れになります。

于 2013-02-07T21:04:57.940 に答える