Redis与Hazelcast的比较

41

Redis与Hazelcast

如果我的应用程序:

  • 有很多HTTP请求(每分钟6000个,我收集点击信息)需要保存
  • 有很多HTTP请求查询以前保存的数据。

我的问题是: - Redis和Hazelcast中哪一个应该选择来存储和查询数据? - 哪个读写速度更快? - 哪一个更可靠? - 或者Cassandra可能是更好的选项?

回答其中任何一个问题都可以帮助您。


4
请尽可能清楚地描述您的问题,包括您想要插入的数据以及您需要查询数据的方式。 - antirez
1
我计划存储约30M个键值对。数据看起来像是userid-Set,每个集合有大约10个属性。它将不断更新和查询。我喜欢Redis,因为它知道什么是Set并且只需要进行一个操作,但它无法扩展。 - Federico
1
将近十年过去了,每分钟6000个请求已经非常普遍,几乎不算“很多”。 - Abhijit Sarkar
5个回答

31

我们为了缓存的需求,从Redis切换到了Hazelcast。

  • 对于我们来说,使用Protostuff + Hazelcast比使用Protostuff + Jedis (pooled) + Redis更快。

我们使用Protostuff将昂贵的bean序列化。Hazelcast的标准序列化机制比较慢。我们的环境是Glassfish 3.1。

Hazelcast似乎只有Java库,而Redis提供了每种语言的库。

没错。Hazelcast只提供了一个REST API和实现了memcached协议的库。


10
现在Hazelcast已经有很多官方客户端,包括.Net、Java、C++、NodeJS、Python、Go和Scala,这些客户端可以在此处找到列表(https://hazelcast.org/clients-languages/)。 - sepehr

18

有一个非常方便的库 - Redisson。它在Redis服务器的基础上提供了分布式Java对象和服务(BitSet, BloomFilter, Set, SortedSet, Map, ConcurrentMap, List, Queue, Deque, BlockingQueue, BlockingDeque, ReadWriteLock, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, RemoteService, ExecutorService, LiveObjectService, ScheduledExecutorService)!

它支持集群、哨兵、主/从和单一连接模式。

在云中完美运行,支持AWS Elasticache和Azure Redis Cloud。

以下是来自Redisson客户的一些成功案例:

从Hazelcast迁移到Redis
使用Redis进行分布式锁定(从Hazelcast迁移)

请注意:我是Redisson的作者。


5
请恕我直言,您是redisson的作者,请在回答中明确说明这一点。 - hossein bakhtiari

15
截至2017年,Redis和Hazelcast都提供高可用性/可扩展的键/值存储。响应时间非常快,小于10毫秒。
Redis独特之处在于它支持其他数据结构,如有序集合、哈希集合和发布/订阅机制。它还可以通过Lua脚本进行扩展。它可能是这两个产品中最流行和广泛使用的。特别是在Java生态系统之外。
Hazelcast独特之处在于它可以嵌入到Java主机进程中,非常适合构建有状态的微服务,而无需外部数据库依赖。它还有一些其他小差异,例如能够从键过期获得回调。某种程度上,它总体做得较少,但是它所做的几件事情做得更好。特别是如果您使用Java。
总的来说,这些都是类似的解决方案,旨在解决类似的用例,例如缓存外部数据、创建通信背板或有状态微服务的共享内存状态,甚至可能存储(少量非关系型)业务数据,具有一定的耐久性。

不同意你的观点。Redis的规模配置并没有花费很多时间,只需要一个小时左右。如果你使用Redisson,就不需要Twemproxy了。它可以为你解决任何连接平衡问题。 - Nikita Koksharov
2
我同意自从我写这篇文章以来,随着Redis集群的RC和新的SaaS托管服务,Redis的横向扩展到多个负载均衡实例的情况已经发生了变化。 - Eric Rini
@Eric 那么请编辑或删除您的答案。 - Aleksandr Dubinsky

1

Redis和Hazelcast是基于内存的数据库,理论上应该提供相同的速度和性能。查看Hazelcast的文档,您将因为与数据库交互的库数量众多而获得更好的Redis支持。Hazelcast看起来只有Java库,而Redis则针对每种语言都有一个库。

答案:

  1. 您将不得不自己测试,据我所知,不同的比较显示Redis更快其中一个在这里,但我不会说这些基准测试是100%准确的。

  2. 它们应该都可靠,但我不能保证Hazelcast。

  3. 也许......

我会选择Redis,因为我认为它最易用,并且有很好的文档。


11
这个基准测试将Redis与memcached进行比较,而不是与Hazelcast进行比较。 - nilskp

1
为了决定哪个更好,有一个关于客户端线程使用的问题。
根据这篇基准测试,如果您使用更多的线程,Hazelcast比Redis更好。也许这是一项不公平的公司基准测试,但它展示了一些关于线程的东西。

我会非常感激任何反馈或批评,因为它们可以帮助我学习并改善我的回答。因此,请在给出负评的同时留下评论... - Ferhat
我不会相信这样的基准测试。首先,它没有提供有关Redis集群的任何信息,例如主/从节点数量等重要部分。例如,Redis集群写操作的扩展取决于主节点数量,读操作也是如此。这里有另一个基准测试,显示Redis集群每秒1.2M个操作:http://highscalability.com/blog/2014/8/27/the-12m-opssec-redis-cloud-cluster-single-server-unbenchmark.html - Nikita Koksharov
3
我认为你之所以被人们给踩了,是因为人们在寻找独立和中立的评估不同产品,而你只是链接了Hazelcast自己的博客。即使他们试图保持中立,仍然很可能存在偏见,因为他们会创造适合自己产品的测试。此外,stackoverflow更喜欢你引用相关信息并提供链接,以防止链接失效。 - MichaelRom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接