I'm not sure if this can be done at all.

I'm trying to set Dalli to delete a memcache after 3 seconds (just to experiment)


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

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


In the code, I have set TTL for 3 seconds, and then I expect that after 3 seconds the "test1" would be deleted but apparently not. So, the test fails in the second assertion. How can I ask Dalli to expire a key/value after a certain amount of time?

Thanks a lot.

有帮助吗?

解决方案

You can only explicitly remove a key by calling delete or implicitly via TTL.

Does this happen with a different key besides 'test1'? Try changing your 'add' command to a 'set' command. The add command is conditional, it only sets the value if doesn't already exist. Is it possible you already set that key previously (although unlikely from the code you provided) without specifying a TTL? If you didn't specify a TTL the item is cached indefinitely.

其他提示

Put the following in your session_store.rb initializer

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

That will expire the cache after 20 minutes.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top