首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >100M+密钥的Java缓存设计?

100M+密钥的Java缓存设计?
EN

Stack Overflow用户
提问于 2017-07-27 10:35:50
回答 3查看 857关注 0票数 1

需要缓存超过100+百万字符串键(~100个字符长度)的Java独立应用程序。

所需的标准缓存属性:

  • 坚持不懈。
  • TPS在10毫秒范围内从缓存中获取密钥。
  • 允许失效和失效。
  • 独立的缓存服务器,允许多线程访问.

最好不要使用企业数据库,因为这100百万密钥可以扩展到500 M,这将使用高内存和系统资源,吞吐量缓慢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-28 18:11:24

最后,为了解决这个大数据问题,使用现有的缓存解决方案(哈泽尔卡斯特番石榴缓存呃-缓存等):

  • 已将缓存分为两个级别。
  • 将100 K键分组到一个java集合中,并将它们与公共属性相关联,在我的示例中,密钥具有时间戳。因此,时间戳插槽成为了这个100 K的二级缓存块的关键。
  • 这个时隙键以压缩Java集合的形式存储在Java持久缓存中。
  • 我之所以能够通过带有压缩和解压缩开销的2级缓存获得良好的吞吐量,是因为我的关键搜索受到了范围限制,因此当找到缓存匹配时,大多数后续搜索都是在以前搜索的内存java集合中解决的。

来总结:在键中识别用于分组的公共属性,并将它们分解为多级缓存,否则您将需要大量的硬件和企业缓存来支持这个大数据问题。

票数 2
EN

Stack Overflow用户

发布于 2017-07-27 11:13:30

对于分布式缓存,您可以尝试使用哈泽尔卡斯特

它可以根据您的需要进行缩放,并且有现成的备份和同步。它是一个JSR-107提供商,还有许多其他有用的工具可供使用。但是,如果您想要持久化,您将需要自己处理它或购买他们的企业版。

票数 2
EN

Stack Overflow用户

发布于 2017-07-27 10:42:03

试试Guava Cache。它满足了你所有的要求。

链接:

编辑:另一个。我还没用呢。呃-缓存

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45348317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档