Redis 实战场景详解

作者/分享人:驰骋
向 Ta 提问
3 年+ BAT 的工作经验; 3 年+ TMD 的工作经验。 一直从事大型 Java 应用交易后台研发工作。 负责过大流量,高并发复杂业务后台服务整体稳定性工作,对性能优化有丰富的实战经验, 同时也有多年的技术团队管理经验。

很多文章和书籍都有介绍 Redis 的基础理论知识,单纯的理论介绍很难让读者轻松的理解。

本文将通过业务场景以及实际问题出发来进行 Redis 知识的详细讲解与使用。让大家能够很清晰的认知什么业务场景使用 Redis 的什么知识点,以及原因。希望通过本文,大家能够在未来的工作中快速的进行技术方案的正确选型。

通过本文大家将学习到:

  1. Redis 各个知识点在业务场景中的使用方式;
  2. Redis 可能遇到的困难以及解决方案(穿透、雪崩等);
  3. Redis 分布式环境的使用方案(分布式锁、自增 ID 等);
  4. Redis 集群模式总结;
  5. Redis 面试题目总结。
已有1560人预订
预订达标
文章出炉
交流日期
     
03月10日
03月27日
04月03日 20:30
查看文章评论/提问
图图
缓存穿透讲的不是很清晰具体; 正常访问缓存流程是:拿着KEY,访问缓存存在则返回,不存在则访问DB;访问DB也有两种情况,存在和不存在;如果存在则返写缓存,然后返回结果;如果不存在就返回不存在,但是也不写缓存;当然,存在肯定是正常情况; 缓存穿透针对的就是访问DB也不存在的这种情况;因为这种情况下正常是没有 把不存在的结果写进缓存的,所以如果有人恶意攻击redis,拿着一个不存在的key去访问缓存,那么请求就会一直落到DB上,对DB造成性能损耗;针对这种情况,就是把访问DB时“不存在结果”的情况也返写到缓存去,这样下次再来就直接从缓存返回没有; 当然,如果攻击者掌握key的规律,拿着都是缓存不存在的key来攻击,那就是另一回事了,可以在业务中对key做合法检查,等等;
驰骋: 赞! 写文章的时候考虑把重点突出出来 就没有写详细的步骤
bayiwzq: 可以使用redis的RedisBloom插件,在请求之前判断一下是否在布隆过滤器中存在,虽然有一定的误判率,但是可以通过对业务的评估设置合适的INITIAL_SIZE 和ERROR_RATE
破石
不错,集大成。还差一个resp协议,可以简单介绍补充下
zl
写的很赞,通俗易懂,内容全面!
李会会
写的非常细致全面
我的实时计算系统,一直用哨兵模式的redis做数据库。在高并发下,哨兵模式的redis性能不足,必须通过减少写入,分隔写入和读取时间等方式解决。
驰骋: 嗯 哨兵模式本身是基于主从为基础,所以写并发比较多的情况下,主压力肯定是有的。 你替换成cluster集群模式 看看优化效果
jesse
缓存击穿的解决方案是不是也可以使用使用一个 互斥锁来锁住它,等第一个线程查询到了数据,然后做缓存。后面的线程进来发现已经有缓存了,就直接走缓存了
驰骋: 这种方式从效果上肯定是可以实现。 但使用锁来处理这类问题,代价太大,我们还需要对锁进行相应的维护。
从零开始
讲的真是太好了
H晓彤
其实很多知识都了解,知晓。但是像作者这样能将知识进行系统的、完整的、梳理如此清晰实属不易。通常一门技术中最常用,需要记住的只占20%,却可以完成80%以上的工作。作者将最重要的20%做了很好的展示!
谢通
缓存穿透:如果是恶意攻击,那么存在访问的数据数据库不存在且数据各不相同,如何避免这一情况?
小猪
占少云
非常详细
你可能还喜欢
高并发、低 RT 的风控系统架构及技术架构的实现
火币集团研发中心
全栈开发入门实战:后台管理系统
鲁鹏
程序员副业赚钱的 8 种模式
安晓辉
每一个开发人员都应该懂的 UML 规范
码匠笔记
“花式吊打”系列之逻辑回归讲透透
天马行空
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
当年明月
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
添加小助手微信×