本地缓存 Caffeine 中的时间轮(TimeWheel)是什么?
💡
原文中文,约12600字,阅读约需30分钟。
📝
内容提要
本文介绍了 Caffeine 缓存的过期时间策略,包括 expireAfterAccess、expireAfterWrite 和自定义过期策略 expireAfter。自定义策略利用时间轮(TimeWheel)管理过期事件,支持 O(1) 的添加和删除操作。通过源码分析,详细阐述了时间轮的结构及元素的过期处理机制。
🎯
关键要点
- Caffeine 缓存提供三种元素过期时间策略:expireAfterAccess、expireAfterWrite 和自定义过期策略 expireAfter。
- expireAfterAccess 和 expireAfterWrite 的过期机制通过遍历队列中的元素来判断是否过期。
- 自定义过期策略 expireAfter 使用时间轮(TimeWheel)管理过期事件,支持 O(1) 的添加和删除操作。
- 时间轮的结构由多个桶组成,每个桶存储不同时间跨度的事件,允许高效的过期事件管理。
- Caffeine 缓存的维护方法负责执行元素的过期策略,包括调用时间轮的 advance 方法。
- 时间轮的 advance 方法用于推进时间,检查各层级的时间流动并处理过期事件。
- expire 方法处理过期节点,未过期的节点会重新调度到合适的时间层级。
➡️