【发布时间】:2012-09-18 17:34:31
【问题描述】:
我想在内存中缓存对象。要求如下:
- 每条记录/对象都与一个唯一键相关联。
- 要存储 400-500 条记录/对象。如果记录数增加超过指定限制,则应逐出较旧的记录。
- 记录的存储时间不应超过 2 分钟。
- 当 JVM 内存不足时应该缩减(弱引用的一种)。
- 无法使用第三方库,因为它是一个小模块,目的只是为了减少不必要的网络访问。
- 写入更多,读取更少
这里的安全性也是一个问题,因为我们要缓存一些敏感数据。这些数据将被缓存在内存中。我真的应该担心安全性并加密数据吗?
我正在寻找一个提供类似功能的 Java 类。
目前我正在考虑扩展WeakHashMap,并实现各种私有/公共方法以符合要求。
如果您有任何其他想法,请在此处分享。
【问题讨论】:
-
Third party library shouldn't be use.这是一个奇怪的要求.. -
@BrendanLong 是对的。 Guava's CacheBuilder 将是解决此问题的绝佳方法。
-
如果您的任务是重新实现这个特定的轮子,并且您正在问这些问题,那么就出了问题。
-
@Brendan 实际上,“没有第三方库”是我在企业世界的项目中遇到的一个非常普遍的要求。
-
许多企业商店不会使用开源解决方案,因为他们认为如果解决方案的开发人员剽窃,他们将承担责任。
标签: java caching in-memory weakhashmap