Redis——缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

Redis的缓存机制是:当有查询操作时,会先查询Redis,如果Redis中没有该key,那么就会去查询数据库,并把查询结果写入到Redis中,当下一次查询的时候,就会直接从Redis中查询

缓存雪崩:由于内存的有限,我们一般会给缓存设置个有效期,如果redis中大量的key在同一时刻失效了,并且,这些失效的key被同时大量访问时,那么这些访问就会走数据库,而对数据库造成极大的压力

缓存雪崩解决方法:在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期

缓存穿透:就是查询的数据,在redis中不存在,在数据库中也不存在,查询结果是null,我们是无法写入到Redis中,当有100万的并发查询这个数据时,由于redis中不存在,那么都去数据库中查询,这样会给数据库造成极大的压力

缓存穿透的解决方法:如果发现查询的数据不存在,那么我们就给该key赋值,赋一个空字符串"",由于内存有限,对该空串设置一个较短的过期时间,这样当发生高并发时,就可以直接走redis缓存

缓存预热:就是我们程序猿,可以先把可能高访问的数据访问一遍,加载到redis缓存中,这样当项目部署之后,用户去访问就可以直接访问redis缓存了,减轻了数据库的访问压力

缓存更新:当我们更新数据时,我们先把数据库中的数据更新了,成功之后把缓存中的数据失效

缓存降级:当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级,例如,有些服务不稳定刚上线而超时,可以自行降级,再例如,由于特殊原因,数据错误了,需要人工降级

发布了422 篇原创文章 · 获赞 273 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/104573788