Java数据结构(如HashMap,BitSet等)和NoSQL(如Redis,MongoDB等)缓存

于带的数据结构:不用跟缓存服务器建立通信,效率可能会见更强?但是当集群环境数据不克共享。
redis可以持久化,服务器再开不用重新确立缓存
redis是单线程,线程安全的。 自带的如果考虑线程安全之问题.

引用知乎上面的原话是:
问“哪种好”一般拿走的答案都是“不肯定”。这不是一个非黑即白的社会风气,大部分下还得要“看情形”。
轻量级应用自带数据结构做缓存可以是一个毋庸置疑的挑三拣四,不经网络的通讯方式势必相对高效,并且对先后来说也简单容易用。但是大部分自带数据结构并无是线程安全之,意味着当适宜的下你得协调加锁进行线程同步。线程同步的话题不在主题的讨论范围外,但是想娱乐转线程同步啊并无是桩轻松的工作,很多总人口未是沿不停止就是是采取了重的锁导致性能低下。在真的高并发环境中不怕一有点截时间之性降低,也恐怕致服务器上积累大量请无法处理要而下崩溃。
因而当您的动到一定范围NoSQL,就该考虑采取分布式缓存了,除了锁的题材已经于服务端解决之外,还好化解而提到的休养生息存无法共享的题目,以及水平扩展的问题(缓存太多无法以同等高服务器容纳怎么收拾?)。同样的规格下起里缓存迁移至分布式缓存可能连无可知缩短响应时间增长QPS,大部分时刻可能还会以必程度达到延长响应时间(网络传输和序列化、反序列化过程)。但是作为交换,更关键之凡牵动了水平扩展能力,说直白头,让你得由此堆服务器就可以拍卖又多请。水平扩展才是大多数分布式数据库要化解之要问题。
自然在引入NoSQL的又也不可避免地引入了复杂,为公的开销多额外的工作量。但是NoSQL数据库又会带一些额外的功利,比如高可用,缓存数据的一致性。
说了这般几或许已经绕晕了,我思发挥的意是,引入NoSQL来举行缓存可能并无像而想象的那出色,它既会带问题,也会带来优势。你如果举行的事情是,对您协调的下场景评估其拉动的优势是不是您想要之,享受这些优势的同时,你是否可忍受她带动的不良影响,然后决定使无苟为此。

设若redis水平扩展时,要留意主从延迟的题目,如果工作要求强一致性,
就只能且从主

网站地图xml地图