Redis与Hazelcast如果我的应用程序:
有很多需要保存的http请求(每分钟6000个,我收集点击信息)
有很多http请求查询以前保存的数据.
我的问题是 - 我应该选择在Redis和Hazelcast之间存储和查询数据 - 哪一个更快的读写? - 哪一个更可靠? - Cassandra可能是更好的选择吗?
回答任何问题都有帮助
我们从redis切换到hazelcast以满足我们的缓存需求.
Protostuff + Hazelcast比我们快得多
Protostuff + Jedis(合并)+ Redis
我们使用protostuff来序列化创建昂贵的bean.Hazelcasts标准序列化机制要慢得多.我们的环境是Glassfish 3.1.
Hazelcast看起来只有java库,Redis每种语言都有一个.
真正.Hazelcast仅提供REST API和memcached协议的实现.
有一个非常方便的lib - Redisson.它提供了分布式Java对象和服务(BitSet
,BloomFilter
,Set
,SortedSet
,Map
,ConcurrentMap
,List
,Queue
,Deque
,BlockingQueue
,BlockingDeque
,ReadWriteLock
,Semaphore
,Lock
,AtomicLong
,CountDownLatch
,Publish / Subscribe
,RemoteService
,ExecutorService
,LiveObjectService
,ScheduledExecutorService
对Redis的服务器上)!
它支持集群,标记,主/从和单连接模式.
完美适用于云并支持AWS Elasticache和Azure Redis Cloud
以下是Redisson客户的一些成功案例:
使用Redis从Hazelcast迁移到Redis
分布式锁定(从Hazelcast迁移)
截至2017年,Redis和Hazelcast都提供高可用性\可扩展密钥\值存储.响应时间非常快<10ms.
Redis的独特之处在于它支持其他数据结构,如sored sets,hash sets和pub\sub机制.它也可以通过lua脚本进行扩展.它可能是这两种产品中最受欢迎和最广泛使用的产品.特别是在Java生态系统之外.
Hazelcast的独特之处在于它可以嵌入到Java主机进程中,因此非常适合构建有状态的微服务而无需外部数据库依赖.它还有一些其他的小差异,比如能够从密钥到期时恢复回调.从某种意义上说,它总体上做得较少,但它做的事情很少,它会更好.特别是如果你使用的是Java.
总的来说,这些是针对类似用例设计的类似解决方案,例如缓存外部数据,为有状态微服务创建通信背板或共享内存状态,甚至可能存储具有一定程度耐久性的(少量非关系型)业务数据.