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

如何用FusionCache实现基于关联标识的批量缓存键驱逐?

问题

需要缓存用户与角色的双向关联数据(按用户存角色、按角色存用户),角色与认证声明(auth claims)为一对多映射。当该映射发生变化时,需批量驱逐所有受影响的用户和角色缓存。此前使用HybridCache的标签功能可一键完成操作,但切换到FusionCache后无原生标签批量驱逐能力。现有临时方案为读取新旧角色集、合并关联用户后删除对应缓存键,但该方案非事务性且缓存调用量较大,而用标签仅需2次调用,求FusionCache实现类似按标签批量驱逐的方法。

解决方案

FusionCache目前无原生标签批量驱逐功能,可通过以下两种方式模拟实现:

利用二级缓存的原生标签能力

若使用了支持标签的二级缓存(如Redis),可直接借助其标签功能:

  • 缓存数据时,为相关缓存项打上对应标签(如角色ID标签、用户ID标签)
  • 需批量驱逐时,调用二级缓存的标签驱逐API,一次性清除所有关联缓存项

手动维护标签与缓存键的映射

自行在缓存中维护标签到缓存键的关联关系:

  • 添加缓存项时,将缓存键关联到对应标签,并存入专门的集合缓存(例如用HashSet存储每个标签对应的所有缓存键)
  • 批量驱逐时,先读取标签对应的所有缓存键,逐一删除这些缓存项,最后删除标签对应的集合缓存
  • 注意需处理并发问题,可通过FusionCache的锁机制保证操作原子性

另外,FusionCache官方曾提及未来版本可能考虑原生支持标签功能,但当前版本仅能通过上述方式模拟实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:57:02