我们使用SpringCache框架 + Redis来实现项目中的缓存实现,它能实现自动对数据缓存,也可以自动清理过期的缓存。大多数情况下,它都运行非常好。
这是因为我们需要缓存的数据,通常都是可序列化的,但是我们迟早会遇到不可序列化的对象。那么我们只能选择SpringCache中的ConcurrentMapCache才能缓存这些不可序列化的对象,但是ConcurrentMapCache呢又不提供自动清理缓存的功能。
于是我开始自己设计一个本地的、高效的、能自动清理缓存扩展,同样它能支持SpringCache。
为了高效的清理缓存,我采用分桶策略,这一设计思想来源于ZooKeeper的Session管理。分桶策略也是本文的精彩内容。
那么使用的时候,就只需要增加注解就行了
那么使用的时候,就只需要增加注解就行了
为了实现自动清理缓存,我继承了ConcurrentMapCache,采用分桶策略,定时清理。
使用时,用LocalExpiryCache替换掉ConcurrentMapCache即可