5.3. 使用 Data Grid 缓存驱除
驱除可让您以以下两种方式之一从内存中删除条目来控制数据容器的大小:
-
条目总数(
max-count)。 -
最大内存量(
最大大小)。
驱除会一次性丢弃来自数据容器的一个条目,并且是本地的到它发生的节点。
重要
从内存中移除条目,但不会从持久缓存存储中删除条目。要确保在 Data Grid 驱除后条目仍然可用,并防止与数据不一致,您应该配置持久性存储。
当您配置内存时,Data Grid approximates data 容器的当前内存用量。添加或修改条目时,Data Grid 会将数据容器的当前内存用量与最大大小进行比较。如果大小超过最大,Data Grid 将执行驱除。
驱除在线程中立即发生,它会添加一个超过最大大小的条目。
5.3.1. 驱除策略
当您配置 Data Grid 驱除时,可以指定:
- 数据容器的最大大小。
- 缓存达到阈值时删除条目的策略。
您可以手动执行驱除或配置 Data Grid 以执行以下操作之一:
- 删除旧条目,为新条目腾出空间。
引发
ContainerFullException并防止创建新条目。例外驱除策略只适用于使用 2 阶段提交的事务缓存,而不适用于 1 阶段提交或同步优化。
有关驱除策略的详情,请参阅架构参考。
注意
数据网格包括 Caffeine 缓存库,它实现了 Least Frently Used (LFU)缓存替换算法(称为 TinyLFU)的变体。对于 off-heap 存储,Data Grid 使用 Least Recently Used (LRU)算法的自定义实现。
其他资源