Redis与Hazelcast 如果我的应用程序:
我的问题是 - 我应该选择在Redis和Hazelcast之间存储和查询数据 - 哪一个读写更快? - 哪一个更可靠? - Cassandra可能是更好的选择吗?
回答任何问题有帮助
答案 0 :(得分:22)
我们从redis切换到hazelcast以满足我们的缓存需求。
我们使用protostuff来序列化创建昂贵的bean。 Hazelcasts标准序列化机制要慢得多。我们的环境是Glassfish 3.1。
Hazelcast看起来只有java库,Redis每种语言都有一个。
真。 Hazelcast只提供REST API和memcached协议的实现。
答案 1 :(得分:12)
有一个非常方便的lib - Redisson。它提供分布式Java对象和服务(BitSet
,BloomFilter
,Set
,SortedSet
,Map
,ConcurrentMap
,List
, Queue
,Deque
,BlockingQueue
,BlockingDeque
,ReadWriteLock
,Semaphore
,Lock
,AtomicLong
,{{ Redis服务器之上的1}},CountDownLatch
,Publish / Subscribe
,RemoteService
,ExecutorService
,LiveObjectService
)!
它支持群集,哨兵,主/从和单连接模式。
完美适用于云并支持AWS Elasticache和Azure Redis Cloud
以下是Redisson客户的一些成功案例:
Moving from Hazelcast to Redis
Distributed Locking with Redis (Migration from Hazelcast)
答案 2 :(得分:11)
截至2017年,Redis和Hazelcast都提供高可用性\可扩展密钥\值存储。响应时间非常快<为10ms。
Redis的独特之处在于它支持其他数据结构,如sored sets,hash sets和pub \ sub机制。它也可以通过lua脚本进行扩展。它可能是这两种产品中最受欢迎和最广泛使用的产品。特别是在Java生态系统之外。
Hazelcast的独特之处在于它可以嵌入到Java主机进程中,因此非常适合构建有状态的微服务而无需外部数据库依赖。它还有一些其他的小差异,例如从密钥到期时获得回叫的能力。从某种意义上说,它总体上做得较少,但它做的事情很少,它做得更好。特别是如果你正在使用Java。
总的来说,这些类似的解决方案专为类似用例而设计,例如缓存外部数据,为有状态微服务创建通信背板或共享内存状态,甚至可能存储(少量非关系)业务数据,具有一定程度的持久性
答案 3 :(得分:1)
要确定哪一个是好的,有关于客户端线程使用的问题。
根据这个benchmark如果你使用更多线程,Hazelcast比Redis更好。也许这是一个不公平的公司基准,但展示了一些线程。
答案 4 :(得分:0)
Redis和Hazelcast都是基于内存的数据库,因此从理论上讲,它们应该提供相同的速度和性能。查看Hazelcast的文档,您将获得更好的Redis支持,因为有大量的库可以与数据库连接。 Hazelcast看起来只有java库,Redis每种语言都有一个。
数目:
你必须自己测试一下,据我所知,不同的比较显示Redis更快one of them is here,但我不会说这些基准是100%
< / LI>他们应该是可靠的,但我不能保证Hazelcast。
也许......
我会选择Redis,因为我发现它是最实用的,并且它有很好的文档。