Redis 实战场景详解

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

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

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

通过本文大家将学习到:

  1. Redis 各个知识点在业务场景中的使用方式;
  2. Redis 可能遇到的困难以及解决方案(穿透、雪崩等);
  3. Redis 分布式环境的使用方案(分布式锁、自增 ID 等);
  4. Redis 集群模式总结;
  5. Redis 面试题目总结。
已有1929人预订
预订达标
文章出炉
交流日期
     
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%做了很好的展示!
谢通
缓存穿透:如果是恶意攻击,那么存在访问的数据数据库不存在且数据各不相同,如何避免这一情况?
小猪
占少云
非常详细
hyf
集群模式这部分比较泛化。主从复制,具体的复制原理等这些其实可以再明确一些。 其实更建议能够有一些数据化的分析,比如一般的单节点可以扛住多大的并发。 在多少数据量的时候,就需要有主从模式,什么时候就需要哨兵模式,多大的数据量和场景下就需要考虑Cluster集群模式了? redis自带的压测工具没有提及。
latent
建议看新手《Redis开发与运维》这本书,另外作者一开始命令介绍那里,从list取的命令应该是lrange吧
你可能还喜欢
JVM 问题诊断快速入门
火币集团研发中心
面试字节跳动的一点小经验
Wayne
互联网公司热门面试题:如何保证缓存与数据库的双写一致性?
魏武归心2016
面试官问:为什么在项目中使用消息队列!到底是想考什么?
零下
小程序 · 云开发实战:从 0 到 1 快速开发电商小程序
微信极客WeGeek
如何做好性能压测(二) | 性能压测工具选型对比
阿里巴巴中间件
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效