1

我不确定这是否可以做到。

我正在尝试将 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 在一定时间后使键/值过期?

非常感谢。

4

2 回答 2

0

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

除了“test1”之外,这是否会发生在不同的键上?尝试将您的“添加”命令更改为“设置”命令。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 回答