缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。缓存可以在内存中存储一份数据副本,从而不用重新请求计算达到高性能的效果,现在系统中缓存已成为必不可少的模块,并且已经成为了高并发高性能架构的一个关键组件。
提升性能:这不用说了,当我们在一个请求或者一些计算中需要一定的时间,如果每次请求都去计算一次,那么花费的代价会递增,这时加入缓存,将第一次请求得到的结果存入内存,就能在内存中直接获取而不用再去花费代价去计算,但是在内存中存储一份结果需要一定的空间,所以缓存是以空间换时间的手段。
缓解数据库压力:当用户量增加,数据库压力增加,如果在访问数据库的操作前加入缓存,就能不访问数据库拿到数据。
提升用户体验:因为是存在内存中,所以获取到缓存数据跟快,返回响应速度也就更快。
、 提升并发量:由于性能提升了,响应速度就更快,能够响应的请求也就更多了。
数据不一致:当数据被缓存或又更新了,导致数据库数据与缓存的数据不一致,需要一些策略解决。
缓存雪崩:由于设置的缓存过期时间一致,导致所有缓存一起过期,随后大量请求直达服务器,可使用随机过期策略。
缓存穿透:一直使用缓存中不存在的key请求服务器,导致所有请求直接穿透到服务器。
缓存击穿:某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。
在客户端使用客户端缓存可以减少一些小图标以及一些css、js文件的请求;CDN缓存和反向代理缓存用来拦截到请求后先确认是否有无缓存,有缓存的话不用访问服务器直接返回响应,否则再转发到目标服务器;本地缓存与分布式缓存都是服务端缓存,前者只在单节点服务端存储,不能做到缓存共享,后者提供一个高效的第三方空间,集群中的服务器都能访问到,共享缓存数据。
原文:https://www.cnblogs.com/zousc/p/12870384.html