夏日炎炎,无风。。。从空调房间出来,再到接近四十度的高温,这个过程。。。缓存预热了解一下。。。
为什么要用缓存?因为追求性能,因为要追求极致的用户体验。
缓存基本上不需要持久化,从而是无状态的,那么使用容器是最好的方法了,而缓存系统,redis相当合适。。不要问为什么不用memcache。。。因为redis的功能比memcache多,因为redis还能持久化,因为redis还能支持各种数据结构,并且两者的性能相差无几,都能支持8万左右的TPS。
缓存理论1、 缓存适合的场景
缓存,就是将一些需要读取数据放在磁盘或者内存中,由于是追求速度,从而一般放在内存中。
在读取数据的时候,一般是从关系型数据库中读取数据,在数据库层面也可以进行各种优化,例如读性能不足,那么可以添加几个从库,从而数据库的一主多从;例如写性能不足,那么可以分库分表。
在有些场景中,要使用缓存,是因为无法解决读的速度,例如count(*)的操作,无论从数据库的层面如何优化,都不可能提高;还有一种就是sql的执行本身就必须消耗很多资源和时间,例如各种关联查询子查询,这些时候,都可以将这些数据放在缓存当中,从而大大的减轻数据库的压力。
2、 缓存穿透问题
在使用缓存的时候,第一个问题就是缓存穿透的问题,就是使用了缓存和没使用缓存是一样的,应用程序到缓存中查询数据,发现数据么有,那么就去数据库查询,在这里,穿透了缓存,缓存没起到保护数据库的作用。
在爬虫爬取网页的时候,每个分页都会爬取,而对于缓存的分页数据,一般只缓存了热点数据,也就是前几页的数据在缓存当中,如果全部爬取,那么就会造成缓存不命中,导致查询数据库;还有一种就是故意搜索一些不存在的关键字&