我正在用java实现缓存,但我还有最后一个问题要解决:如何处理元素的删除?
元素存储在磁盘上,每个元素都有有效期(然后是到期日期)和大小,我的缓存显然有最大大小和可以存储的最大元素数量。
我想象了三种执行元素删除的方法:
- 将新元素插入缓存时,调度线程(每个元素一个)配置为在到期时间启动(以删除元素本身)
- 每 X 分钟执行一个线程,以检查哪些元素可以被删除(并删除它们)
- 当达到限制(大小或数量)时,最旧的元素被删除(或随机删除元素(更快))
关于第三点,使用此策略缓存将继续存储过期元素。显然,当需要其中之一时,将执行控制以检查元素是否仍然有效。
你有什么想法?管理缓存时的常见行为是什么?还有其他解决方案吗?
PS我正在为Android开发这个缓存,但我认为这不是那么重要。