这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
一、本堂课重点内容
- Redis
二、详细知识点介绍
1.Redis是什么
为什么需要Redis:
- 数据分冷热:热数据为经常被访问到的数据
- 将热数据存储到内存中
Redis基本工作原理:
- 数据从内存中读写
- 数据保存到硬盘上防止重启数据丢失:增量数据保存到AOF文件、全量数据RDB文件
- 单线程处理所有操作命令
2.Redis应用案例
- 连续签到:应用String数据结构-sds可以存储字符串、数字、二进制数据,通常和expire配合使用实现存储计数
- 消息通知:用list作为消息队列,List数据结构Quicklist,
- 计数:一个用户有多项计数需求,可通过hash结构存储,Hash数据结构dict。
- 排行榜:积分变化时,排名要实时变更,结合dict后,可实现key操作跳表的功能,zset数据结构 zskiplist。
- 限流:要求1秒内放行的请求为N,超过N则禁止访问
- 分布式锁:并发场景,要求一次只能有一个协程执行。执行完成后,其他等待中的协程才能执行。
3.Redis使用注意事项
-
大Key、热Key:
大Key:数据字节大于10KB即为大key
- 危害:读取成本高,容易导致慢查询,主从复制异常,服务阻塞无法正常响应请求。
- 消除方法:拆分、压缩、集合类结构hash、list、set、set
热Key:用户访问一个Key的QPS特别高,导致Server实例出现CPU负载突增或者不均的情况。
- 解决方法:设置Localcache、拆分、使用Redis代理的热Key承载能力
-
慢查询场景
-
缓存穿透、缓存雪崩
缓存穿透:热点数据查询绕过缓存,直接查询数据库
缓存雪崩:大量缓存同时过期
三、课后个人总结
今天学习的是Redis缓存中间件,通过老师的讲解我了解到大厂的开发在做缓存时采用什么样的技术和针对问题采用什么样的解决方法,收获颇丰,继续加油!