代码仓库 #
https://github.com/WFUing/redis-cache/tree/release_0.0.6
背景知识——guava-cache的删除监听器 #
我们在两种场景下删除数据是对用户透明的:
- size 满了之后,进行数据淘汰。
- expire 过期时,清除数据。
这两个特性对用户本来应该是无感的,不过用户如果关心的话,也可以通过添加删除监听器来获取到相关的变更信息。
具体实现
为了实现删除的监听,我们需要找到删除的位置,然后调用监听器即可。
- evict 驱除的场景:每次 put 数据时,都会校验 size 是否达到最大的限制,如果达到,则进行 evict 淘汰。
- expire 过期的场景
用户指定 expire 时间之后,回后台异步执行刷新。
也存在惰性删除的场景。
实现redis-cache的监听器 #