【问题标题】:Terracotta timeToIdleSeconds verse timeToLiveSeconds兵马俑 timeToIdleSeconds 与 timeToLiveSeconds
【发布时间】:2014-03-04 04:33:19
【问题描述】:

全部,

这是我对这两个要素的理解,我想澄清一下。

timeToIdleSeconds = 如果一个对象空闲超过 X 秒,它将被驱逐。

来自文档

如果客户端访问 myCache 中已空闲更长时间的元素 超过一个小时(timeToIdleSeconds),它会驱逐该元素。元素 也被从 Terracotta 服务器阵列中逐出。

如果缓存中的对象不再被请求,它会被驱逐吗?缓存大小约束是否是清理这个不再请求的缓存对象的唯一方法?

timeToLiveSeconds = 如果一个对象被缓存超过 X 秒,它将被驱逐。这与 timeToIdleSeconds 的工作方式相同吗?仅在再次请求时才被驱逐?或者这会被后台进程清理吗?

谢谢

【问题讨论】:

    标签: caching ehcache terracotta


    【解决方案1】:

    对于您的最后一个问题:“或者这会被后台进程清理吗?”

    http://terracotta.org/apidocs/terracotta-toolkit/3.2.0/org/terracotta/cache/CacheConfig.html

    在 setMaxTTISeconds 和 setMaxTTLSeconds 中都有:

    “后台驱逐线程休眠间隔是基于这个值和Max TTL,所以改变这个值的副作用是改变驱逐线程的休眠间隔。”

    我假设不同版本的 Terracotta 是相似的;相信会有后台线程在做清理。

    如果这是正确的,那么它似乎暗示不需要触发驱逐的请求,这与您引用的文档有些相反。

    【讨论】:

    • 根据我的测试,似乎 TTL 是这样工作的。后台线程 (DGC) 根据 TTL 清除缓存中的旧对象。空闲时间 (TTI) 似乎没有被该后台进程清理。我看到缓存已填满,再也不会倒下。对象被驱逐为新对象腾出空间,但最大缓存大小仍然是满的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多