前段时间,有个人吐槽自己的同事是上古程序猿,干了8年Java开发,一直坚持反对使用Redis。那位上古程序猿设计公司的业务系统时候,始终坚持永远不要用缓存(其他人想用redis),例如做个接口防重复,一定要用数据库来实现,包括定期失效之类的功能。我们在工作中也经常会用到Redis,但是为什么要用Redis?关于Redis的一些场景和实战问题,90%以上的人都没有真正理解Redis。
项目中使用Redis,主要考虑性能和并发。其实不是所有的场景都要上Redis,如果仅仅是分布式锁这些,完全可以用中间件Zookpeer等代替。很多业务系统其实用数据库就够了,无脑上缓存/NOSQL可能会带来更多更严重的问题。
但是在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。
如果你是一位后端工程师,面试时八成会被问到 Redis,特别是大厂,不仅要求能简单使用 Redis,还要深入理解底层原理,具备解决常见问题的能力。可以说,熟练使用 Redis 是后端工程师的必备技能。
不管学习任何一门技术,都应该有个系统的学习!为什么一定要系统性学习?不管你是不是做 IT,其实都有系统性学习的必要。系统性的学习一个知识点,可以让我们在遇到问题时考虑得更加全面,这也是一个成熟的工程师应该具备的特征;碎片化的学习则很容易让我们得出一些片面的、甚至错误的结论。
然而,系统性学习需要耗费巨大的时间和精力,有的人可能会觉得不值得,就放弃了系统性学习,转而信仰复制粘贴改一下七字真言,一头扎进 CURD 的苦海。
对于一个开发者而言,则设计开发方案时,一定要将方案考虑周全。怎样才能将方案考虑周全?唯有持续不断地学习!
关于redis的书籍我也看过不少了,虽然都还不错,但是能够从浅深入到源码的却很少,前几天看到的一份来阿里大牛自产的“Redis深度笔记”,起码是我目前看到过的最完善,最有深度的一份笔记了。
本次是免费分享!下面展示部分截图,点击文末名片,扫码即可免费获取!
笔记大概分为以下几个部分:
- 开篇基础部分
- 九大应用部分
- 八大原理部分
- 三大集群部分
- 九大拓展部分
- 七大源码部分
一、开篇基础部分
- 开篇:授人以鱼不若授人以鱼-Redis可以用来做什么
- 基础:万丈高楼平地起-Redis基础数据结构
二、九大应用部分
- 千帆竞发-分布式锁
- 缓兵之计-延时队列
- 节衣缩食-位图
- 四两拨千斤-HyperLogLog
- 层峦叠嶂-布隆过滤器
- 断尾求生-简单限流
- 一毛不拔-漏斗限流
- 近水楼台-GeoHash
- 大海捞针-Scan
三、八大原理部分
- 鞭辟入里-线程IO模型
- 交头接耳-通信协议
- 未雨绸缪-持久化
- 雷厉风行-管道
- 同舟共济-事务
- 小道消息-PubSub
- 开源节流-小对象压缩
- 有备无患-主从同步
四、三大集群部分
- 李代桃僵-Sentinel
- 分而治之-Codis
- 众志成城-Cluster
五、九大拓展部分
- 耳听八方-Stream
- 无所不知-Info指令
- 拾遗漏补-再谈分布式锁
- 朝生暮死-过期策略
- 优胜劣汰-LRU
- 平波缓进-懒惰删除
- 妙手仁心-优雅地使用Jedis
- 居安思危-保护Redis
- 隔墙有耳- Redis安全通信
六、七大源码部分
- 极度深寒-探索(字串符)内部结构
- 极度深寒-探索(字典)内部
- 极度深寒-探索(压缩列表)内部
- 极度深寒-探索(快速列表)内部
- 极度深寒-探索(跳跃列表)内部结构
- 极度深寒-探索(紧凑列表)结构
- 极度深寒-探索(基数树)结构
Redis 涉及的知识点是非常繁多的,这本笔记的作者已经整理的很全面了,但依然无法顾及到 Redis 的方方面面,不过已经是能找到最棒的,有需要的可以点下面的名片找我免费领。
