Redis入门| 青训营笔记

102 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第15天

一、课程内容

  1. Redis是什么:为什么需要Redis,Redis的基本工作原理;
  2. Redis应用案例:通过案例了解Redis的实际应用场景。并介绍Redis常用数据结构;
  3. Redis使用注意事项:在字节跳动使用Redis有哪些注意事项;

二、详细知识罗列

  • Redis最开始就是个web->server->MySQL的结构,但随着业务量的增长,读写数据压力不断增加,从MySQL中读取的qps跟不上需求,于是Redis应运而生了。一部分数据放到Redis里,一部分放到MySQL中,数据分冷热,热数据指经常被访问到的数据。
  • 我们把数据存储到内存里面,但是有问题就是一旦服务器重启,内存中的数据就会丢失,有什么办法既不在内存里面,又可以读写速度快。Redis的基本工作原理:AOF文件和RDB文件 2.jpg
  • Redis应用案例一连续签到,例如掘金的每日签到,24小时内连续签到会增加次数,否则天数清零,这用到Redis的过期。用到string数据结构,自动扩容不需要重新分配空间,SDS指针的工作原理;
  • Redis应用案例二消息通知。当文章更新时,将更新后的文章推送到ES,用户就能搜索到最新的文章数据。当文章写完后引擎怎么知道有一篇文章需要推送呢,因此需要消息通知,用list作为消息队列。Redis的list数据结构是怎么实现的。老师展示了代码实例。QuickList由一个双向链表和一个listpack实现,其中链表节点除了next和prev,还有一个entry数据结构,entry不是一个数据,而是很多数据压缩起来作为一个节点的数据。 3.jpg
  • Redis应用案例三计数。比如一个文章的访问量,可以直接把这个数据放在Redis,同时100个用户访问文章,可以从redis内存中直接读,速度会非常快。比MySQL的count可行的多。Redis可以帮助一次访问多个数据,同时变更多个数据
  • 排行榜案例:比如玩游戏里面有榜单,同一服务器里面的所有用户的榜单要实时同步。积分变更需要操作积分,还需要重排序,当qps达到百万千万,在使用orderby服务器就会挂掉。所以这时候还是要用redis来实现。跳跃表数据结构zskiplist(子链)。
  • 限流问题,用一个key去限制一秒内方形的请求数,超过N则禁止访问。
  • 分布式锁:比如网购抢货,防止超卖的问题。可以使用redis的setnx实现,利用了。
  • 实际使用中大KEY热KEY有很多危害,消除大key的方法 拆分 压缩 5.jpg

三、课程小结

2023.2.15课程学习打卡。本节课老师主要围绕Redis,讲解了Redis的概念,Redis的一些简单的应用案例,还有实际中Redis的使用注意点,非常靠近应用(在哪个场景的什么问题可以使用redis的什么功能解决)。其中老师顺带着讲解了许多进阶数据结构,对面试有不少帮助。收获很多。

四、参考引用

「Redis - 大厂程序员是怎么用的」第五届字节跳动青训营 - 后端专场