为什么用java内存, 而不用redis

 
 
用HashMap一定比Redis快的,因为Redis会有额外的网络IO的开销,那为什么用Redis而不用HashMap? 首先目前大部分的系统是分布式的,这种情况下使用HashMap的话,缓存利用率不高,每台机器上都会有相同的缓存副本,浪费内存。 当A存在某个Key的缓存 B没有,而请求访问到了B,这个时候A的缓存是无效的,请求会访问到DB同时在B上产生一个和A一样的缓存副本。 可以看到,这不仅是有重复的缓存浪费空间,而且缓存的命中率也会有所下降。 其次HashMap做缓存如果控制不好的话会引发FullGC,严重时导致系统宕机。所以,即便是要用本地缓存也会选择类似ehcache这种成熟的实现方案。 再者,系统宕机会导致缓存丢失,而redis支持主备,支持数据持久化,支持集群。可以提供成熟的高可用、高性能的支持。
 
横向:
无法在多机共享
纵向
单机内存资源有限
 
 
posted @ 2021-07-08 23:36  hippoppower  阅读(654)  评论(0)    收藏  举报