gpt4 book ai didi

java - java中的内存缓存对象

转载 作者:行者123 更新时间:2023-11-30 06:28:30 25 4
gpt4 key购买 nike

我想在内存中缓存对象。要求如下:

  1. 每个记录/对象都与一个唯一的键相关联。
  2. 要存储 400-500 条记录/对象。如果记录数增加超过指定限制,则应逐出较旧的记录。
  3. 记录的存储时间不应超过 2 分钟。
  4. 应该在 JVM 内存不足(一种弱引用)时缩减。
  5. 不能使用第三方库,因为它是一个小模块,目的只是减少不必要的网络访问。
  6. 写入较多,读取较少

安全性也是一个问题,因为我们要缓存一些敏感数据。此数据将缓存在内存中。我真的应该担心安全问题并加密数据吗?

我正在寻找提供类似功能的 Java 类。

目前我正在考虑扩展 WeakHashMap,并实现各种私有(private)/公共(public)方法来满足要求。

如果您有任何其他想法,请在这里分享。

最佳答案

你不想使用 WeakHashMapSoftHashMap 会更接近,但在标准库中不可用。如果我是你,我会看看 Guava's cache classes提示。

但这里有一些额外的想法:

Should scale down when JVM is running out of memory(kind of weak reference).

你的意思是软引用。但无论如何,这个要求对我来说有点难闻。我承认这可能是一个有效的要求,但您很少真正需要它。如果您的记录大小可以很好地预测,并且您计划对要缓存的记录数量进行硬性限制,那么您很可能不需要这种复杂性。

Third party library shouldn't be use.

每个人都提到了这一点,他们是对的。

在安全方面,加密缓存在内存中的数据的有效性值得怀疑。您还必须在内存中拥有加密 key 。我敢打赌,除了攻击者读取您的内存内容之外,还有很多事情需要担心。

关于java - java中的内存缓存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12482126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com