You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite colocated缓存开启eviction时关联条目是否会被一同驱逐?

Apache Ignite Colocated缓存驱逐问题解答

问题1:Colocated缓存触发驱逐时是否会联动删除关联缓存的条目

只会驱逐当前触发驱逐条件的缓存对应条目,不会自动关联删除同亲和键绑定的其他缓存条目。

核心原因:Colocated(亲和部署)的本质是实现相同亲和键的多缓存条目路由到同一个集群节点存储,仅优化跨缓存关联查询的网络开销,各缓存的实例、数据、驱逐策略完全独立,驱逐逻辑默认不会跨缓存生效。

问题2:Colocated条目的驱逐执行逻辑及关联条目同步删除方案

内置驱逐执行逻辑

你使用的Random2Lru属于内存数据区域级别的驱逐策略,执行流程如下:

  • 当数据区域的内存占用达到你配置的最大大小阈值时触发驱逐流程
  • 策略会先筛选出近期最少使用的一批候选条目,再从中随机抽取目标条目执行驱逐
  • 整个驱逐过程为节点本地执行,仅处理当前节点存储的主分片/备份分片条目,不会跨节点自动触发其他操作

关联条目同步删除实现方案

Ignite没有内置跨缓存联动驱逐的能力,你可以通过缓存事件监听自定义实现:

  • 第一步:为所有关联的colocated缓存开启驱逐事件配置,示例配置代码:
    CacheConfiguration<?, ?> cacheCfg = new CacheConfiguration<>("yourCacheName");
    cacheCfg.setIndexedTypes(Long.class, YourValue.class);
    // 开启条目驱逐事件监听
    cacheCfg.setEventTypes(CacheEvent.EVT_CACHE_ENTRY_EVICTED);
    
  • 第二步:实现自定义CacheEventListener,在监听到EVT_CACHE_ENTRY_EVICTED事件时,获取被驱逐条目的亲和键,主动遍历所有关联缓存删除对应键的条目即可
  • 注意事项:如果集群开启了缓存备份,可通过事件对象的isNear()等属性判断仅处理主分片的驱逐事件,避免重复执行删除操作

内容的提问来源于stack exchange,提问作者csharpdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:06:03