缓存分为两种:
1.通读缓存:如果数据存在通读缓存里,就直接获取,不存在将数据存到通读缓存中,下次可以直接获取,常见的为CDN和反向代理,CDN称为内容分发网络,就近原则
2.旁路缓存:应用程序需要自己从数据源获取数据,然后存放到旁路缓存,下次读取时就可以通过旁路缓存获取
缓存的好处:
-
大部分缓存存储在内存中,相对于硬盘或从网络中获取效率更高,响应时间更快,性能更好
-
通过CDN等通读缓存可以降低服务器的负载能力
-
缓存通常会记录计算结果,如果缓存命中直接返回,否则需要进行大量的运算,所以缓存也减少了CPU的计算小号,加快处理速度
注意:缓存的数据来自缓存,如果源数据被修改了,缓存数据可能会成为脏数据
解决办法:
-
每次写入缓存时标记失效时间,读数据的时候查看是否失效,如果失效重新从数据源获取数据
-
应用程序在更新数据源的时候,通知清除缓存中的数据
不是数据使用缓存都有意义,通常放入缓存的数据都是带有热点数据,比如当日热门商品,或者热门吃瓜新闻,将这些数据存放在缓存中,会被多次读取,从而缓存的命中率比较高