如何在Dalli中一段时间​​后自动删除内存缓存

时间:2012-01-08 21:25:03

标签: ruby memcached dalli

我不确定这是否可以完成。

我试图让Dalli在3秒后删除内存缓存(仅用于实验)


    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”将被删除但显然不会。因此,测试在第二个断言中失败。如何在一定时间后让Dalli过期密钥/值?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您只能通过调用delete或通过TTL隐式删除密钥。

除了'test1'之外,是否会出现另外一个键?尝试将'add'命令更改为'set'命令。 add命令是有条件的,它只设置值(如果尚不存在)。您是否可以在未指定TTL的情况下预先设置该密钥(尽管您提供的代码不太可能)?如果您未指定TTL,则项目将无限期缓存。

答案 1 :(得分:0)

将以下内容放入session_store.rb初始化程序

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

这将在20分钟后使缓存失效。