Cache
Java手写实现渐进式redis缓存工具。
本节,主要实现类似 guava-cache 中的 removeListener 删除监听器,和类似 redis 中的慢日志监控的 slowListener。
在两种场景下删除数据是对用户透明的:
size 满了之后,进行数据淘汰。
expire 过期时,清除数据。
这两个特性对用户本来应该是无感的,不过用户如果关心的话,也可以通过添加删除监听器来获取到相关的变更信息。
为了实现删除的监听,我们需要找到删除的位置,然后调用监听器即可。
每次 put 数据时,检查 size 是否达到最大的限制,如果达到,则进行 evict 淘汰。
用户指定 expire 时间之后,回后台异步执行刷新。
统一定义删除监听的接口
1 | public interface ICacheRemoveListener<K, V> { |