程序笔记   发布时间:2022-07-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Redis缓存大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

性能瓶颈解决思路 硬件层面:机器扛得住

架构设计:做好服务拆分

代码层面:做好缓存、削峰、解耦

  1. 数据库:读写分离、分库分表

  2. 监控:熔断、限流、降级

总结

事前:redis 高可用,主从+哨兵,redis cluster,避免全盘崩溃。 事中:本地 ehcache 缓存 + HyStrix 限流+降级,避免MySQL 被打死。 事后:redis 持久化 RDB+AOF,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。 数据库绝对不会死,限流组件确保了每秒只有多少个请求能通过。 只要数据库不死,就是说,对用户来说,3/5 的请求都是可以被处理的。 只要有 3/5 的请求可以被处理,就意味着你的系统没死,对用户来说,可能就是点击几次刷不出来页面,但是多点几次,就可以刷出来一次。

这个在目前主流的互联网大厂里面是最常见的,你是不是好奇,某明星爆出什么事情,你发现你去微博怎么刷都空白界面,但是有的人又直接进了,你多刷几次也出来了,现在知道了吧,那是做了降级,牺牲部分用户的体验换来服务器的安全,可还行?

出bug了,大家一定要理解是怎么发生的,以及是怎么去避免的,发生之后又怎么去抢救,你可以不是知道很深入,但是你不能一点都不去想,

测试关注点:

引入缓存之后就还要虑缓存击穿、雪崩、热点一系列的问题了

Redis缓存

缓存概述

核心作用:加快取用的速度

  缓存作为高性能的代表,在某些特殊业务可能承担90%以上的热点流量。对于一些活动比如秒杀这种并发QPS可能几十万的场景,引入缓存事先预热可以大幅降低对数据库的压力,10万的QPS对于单机的数据库来说可能就挂了

Redis缓存

缓存选型

项目中使用redis做为缓存,还没有使用memcache,虑因素主要有两点: 1.redis丰富的数据结构,其hash,list,set以及功能丰富的String的支持,对于实际项目中的使用有很大的帮忙。(可参官网redis.io) 2.redis单点的性能也非常高效(利用项目中的数据测试优于memcache). 作者:欣然 链接:https://zhuanlan.zhihu.com/p/112885553 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

场景预设-秒杀系统

预热商品信息:可以提前缓存提供查询服务 库存数据:可以提前缓存,下单流程可以完全走缓存扣减,秒杀结束后再异步写入数据库。

Redis缓存

热key

    有几十万的请求去访问redis上的某个特定key,那么这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机引发雪崩

针对热key的解决方案:

提前把热key打散到不同的服务器,降低压力 加入二级缓存,提前加载热key数据到内存中,如果redis宕机,走内存查询

Redis缓存

缓存击穿

单个key并发访问过高,过期时导致所有请求直接打到db上

Redis缓存

Redis缓存

缓存穿透

缓存穿透是指查询不存在缓存中的数据,每次请求都会打到DB,就像缓存不存在一样。 解决方案:

加一层布隆过滤器

Redis缓存

缓存雪崩

大量的请求进来直接打到DB上,这样可能导致整个系统的崩溃,称为雪崩。雪崩和击穿、热key的问题不太一样的是,他是指大规模的缓存都过期失效了。 解决方案:

针对不同key设置不同的过期时间,避免同时过期 限流,如果redis宕机,可以限流,避免同时刻大量请求打崩DB 二级缓存,同热key的方案。

Redis缓存

Redis缓存

大佬总结

以上是大佬教程为你收集整理的Redis缓存全部内容,希望文章能够帮你解决Redis缓存所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。