前言
村里的老人说:“不会写缓存器的码农不是好程序员。”

今天我们就来讲讲如何编写一个简单又通用的缓存管理模块。
需求分析
根据以往经验,每一个缓存器,除了要保持被缓存数据/对象之外,还需要同时记录两个与之紧密相关的时间:
- 过期时间 expired —— 缓存超过了一定时间,需要更新了,但当前数据仍然有效
- 失效时间 deprecated —— 缓存超过了很长时间,当前数据已经无效,不能再用了
在过期时间 expired 之前,缓存数据/对象可直接使用,无需刷新;
超过了过期时间 expired,但未超过失效时间 deprecated,此时缓存数据仍然有效,可以继续使用,但需要委托一个线程去获取