用于 NodeJS 应用程序的 Hazelcast 与 Redis(或 RedisLabs)

Hazelcast vs Redis(or RedisLabs) for NodeJS application

我有一个应用程序有超过 2 TB 的数据要存储在缓存中,将使用 NodeJS APIs 访问数据。对于 NodeJS 应用程序,Hazelcast 或 Redis(或 RedisLabs)是更好的选择?考虑以下标准?

我知道在基准测试中,由于多线程实现,Hazelcast 速度更快,而且它也具有可扩展性。但是我们可以使用 NodeJS(需要设置数据结构)有效地利用这些好的特性吗?最后,我们可以在 RedisLabs 中拥有多个分片,这就像让多个线程或进程处理各自的数据块一样,在这种情况下,我相信 Hazelcast 由于多线程性质而具有的优势对于 Redis 来说是正确的,但对于 RedisLabs 则不然,对此有何评论?

好吧,我建议如果你使用的是非常复杂的数据 handling/processing 你应该使用 HazelCast,本质上 nodejs 是单线程的,所以如果你只是使用它来存储键值,请不要使用它。

有官方 API 可以用于 (NodeJS + hazelcast) 但功能非常有限,仅使用 KeyVal

如果您只是将缓存用作键值存储,Redis 好、快、免费!它可以处理大量数据,只需一些额外的设置,请查看 http://redis.io/topics/partitioning

就支持定价而言,RedisLabs 成本较低,如果您将 Redisson 与 Redis 一起使用,它可以为您提供 Hazelcast 使用的所有数据结构:)

BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service

RedisLabs 拥有更多的用户群 + 贡献者,如果你有更多用户,HazelCast 会少一些,所以如果你的数据是 2TB,如果它只是键值.. Redis 是最好的

Hazelcast Node.js client 实际上确实存在并且目前提供以下功能

  • 实现Open Client Binary Protocol,Redis使用基于文本的协议
  • 地图
    • 得到
    • 移除
  • 智能客户端 - 客户端连接到每个集群节点。 由于每个数据分区都使用众所周知的一致性哈希算法每个客户端都可以向相关集群节点[发送操作] =39=],这提高了总体 吞吐量和效率 。在集群中添加或删除节点时无需重新启动客户端。
  • 分布式对象侦听器
  • 生命周期服务

在比较 Hazelcast 和 Redis 服务器端功能方面,您会找到全面的文档 here

谢谢