【问题标题】:Ehcache Element lifetime in cache缓存中的 Ehcache 元素生命周期
【发布时间】:2012-04-30 09:48:28
【问题描述】:

图像制作Spring服务,方式如下:

+--------+ +---------+ +---------+ |后台 | --------- |我的 | ------------ |客户 | |服务 | |服务 | | | +--------+ +---------+ +---------+

为了不向后端发出过多的请求,我使用了 Ehcache。 假设我的服务是一个体育门户,我缓存了结果,这样当客户端请求它们时,我返回缓存,如果没有缓存,我从后端获取信息,将其放入缓存中,然后将其返回给客户。

现在,如果我设置了这些参数

long timeToLiveSeconds
long timeToIdleSeconds

并且客户端发出请求过于频繁,timeToIdleSeconds 不会过期,但 timeToLiveSeconds 无论如何都会过期,并且该元素将从我放置它的缓存中删除,对吗?

【问题讨论】:

    标签: spring caching ehcache


    【解决方案1】:

    是的,你是对的。

    例如:

    timeToIdleSeconds = 30: 如果缓存的对象在那 30 秒内没有被请求,它就会过期 => 上次访问时间计数

    timeToLiveSeconds = 60: 缓存对象将在 60 秒后过期 - 无论它被请求或请求的频率如何 => 创建时间计数

    来自文档(旧版本 1.4):

    timeToIdleSeconds: 设置元素过期前的空闲时间。 即元素过期之前访问之间的最长时间 仅在元素不是永恒的情况下使用。 可选属性。值 0 表示元素可以无限空闲。 默认值为 0。

    timeToLiveSeconds: 设置元素过期前的生存时间。 即创建时间和元素过期之间的最长时间。 仅在元素不是永恒的情况下使用。 可选属性。值 0 意味着 Element 可以无限存在。 默认值为 0。

    【讨论】:

      【解决方案2】:

      如果您同时设置两者,expirationTime 将是 Math.min(ttlExpiry, ttiExpiry),其中

      ttlExpiry = creationTime + timeToLive
      ttiExpiry = mostRecentTime + timeToIdle
      

      完整源代码here.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多