总览

这是OpenHFT的SharedHashMap和流行的键值存储Redis之间的比较。

任何供应商都会告诉您他们的产品多么出色,因此,在我告诉您为什么它对于高性能应用程序来说是“必备”之前,我将首先概述为什么您不使用SharedHashMap。

为什么要使用Redis?

Redis是一个更成熟的数据库,使用相对广泛,包括:

  • 支持多种语言。
  • 通过TCP访问远程客户端。
  • 命令行管理工具。
  • 它执行许多其他键值存储。

为什么要使用OpenHFT的SharedHashMap?



您需要最大化Java性能。 在Java中,它的性能优于Redis和许多其他流行的键值存储。



为什么SharedHashMap可以执行Redis?



它从一开始就是为了性能而设计的,它尽可能地轻巧。



  • 它甚至可以跨多个进程充当嵌入式数据存储。 您无需为通过内核的TCP消息传递付出任何代价。
  • 它被设计为以无中断,无垃圾的方式在Java中使用。
  • 它是用Java编写的,用于Java。

但是C比Java快吗?



比较 ,则嵌入式数据存储快得多。



有什么区别?



基准可以弯曲以适应任何论点。 供应商基准测试往往会为您提供最乐观的数字,因为他们知道自己产品的最佳性能。 键值存储的最简单基准是相同的,其中一个基准是从一个空的数据存储开始并设置许多小的键值,这至少为您提供了理想的理想选择。 您的用例可能会更慢,要求更复杂。

在具有128 GB内存的16核心服务器上设置数百万个键值。



雷迪斯

SharedHashMap

单螺纹

每秒更新约10K

每秒约3M次更新

多线程

每秒约10万次更新

每秒约30M次更新



这些数字是近似值,但它们是在同一台计算机上以Java(使用Jedis连接到Redis)进行相同操作的YMMWV

结论

准确而公正的基准是一个神话,但是它们确实可以准确地为您提供供应商对产品的看法。 OpenHFT对SharedHashMap的看法是,它是为Java设计的,并且以许多流行的键值存储无法匹配的方式执行。 如果需要最大程度地提高Java系统的效率,则应考虑使用OpenHFT的数据管理产品。