【问题标题】:Understanding Infinispan Eviction, Expiration and File store?了解 Infinispan 驱逐、过期和文件存储?
【发布时间】:2015-05-13 00:46:54
【问题描述】:

考虑一个具有以下属性的 Infinispan 缓存(版本 5.3.0.Final),

  1. 有文件存储
  2. 钝化设置为真。

在理解缓存行为时,我遇到了以下问题。

  1. 是否有驱逐和过期两个线程?
  2. 当过期线程运行时,文件中但已过期的条目会发生什么?那些会加载回内存并删除吗?
  3. 这些线程运行的持续时间是多少?
  4. 文件存储文件是仅附加文件吗?
  5. 此 Infinispan 版本中的文件是否有索引?
  6. 在这个 Infinispan 版本的文件中究竟存储了什么?是键值还是值?

【问题讨论】:

    标签: infinispan


    【解决方案1】:

    我不会谈论这么旧的版本,但它可能是一样的。

    1. 命名有点乱,TBH。默认情况下,id 为 org.infinispan.executors.eviction 的线程池具有单线程,它托管处理 expiration 的 ScheduledTask。仅当您向数据容器添加内容时才会触发逐出,并由添加新项目的线程处理。

    2. 取决于缓存存储实现 - 缓存存储 SPI 有方法 purgeExpired() 强制从存储中删除过期条目。无需将任何内容加载到内存中。

    3. 默认为 1 分钟。在配置中搜索wakeUpInterval(或wake-up-interval)。

    4. 不,没有经典文件存储。 SoftIndexFileStore 使用类似的技术。

    5. FileCacheStore 只有几个“桶”并且基于键 hashCode,SingleFileCacheStore(或 KarstenFileCacheStore,取决于您的版本)具有内存索引。

    6. 键和值。

    【讨论】:

    • 命名背后的想法是将过期(从应用程序的角度删除条目时)与驱逐(从缓存的数据容器或缓存存储中物理删除条目时)分开。钝化有点复杂,因为可以将条目从数据容器中逐出并进入缓存存储(如果数据容器已满)。但是过期保持不变,过期的条目无论存储在哪里都不可用。
    • 因此混淆来自于“驱逐”一词的重载,狭义上是“基于实体数量的删除”,广义上是从缓存存储/数据容器中删除,其中包括到期。
    猜你喜欢
    • 2015-11-07
    • 2019-03-17
    • 2013-12-14
    • 2014-08-02
    • 2014-11-23
    • 2014-05-09
    • 1970-01-01
    • 2014-04-01
    • 2018-06-24
    相关资源
    最近更新 更多