[redis-大厂程序员如何使用|青训营笔记]
这是我参加「第五届青训营」伴学笔记的第十五天
前言
记录青训营后端专场的学习过程,有不足的地方还请大佬指正。
由于本人基础比较薄弱,所以笔记尽可能的详细。
该文章开始的版本将以简述课程知识点为主,等后面实践有自己的理解后会编辑添加自己的理解
为何需要redis
- 数据从单表,演进出了分库分表
- MYSQL从单机演进出了集群,导致了数据量增长,读写数据的压力不断增加
- 数据分冷热,热数据即经常被访问的数据
- 将热数据存储在内存中
redis使用案例
分布式锁
并发场景:要求一次只能有一个协程执行。执行完成后,其他等待中的协程才能执行
- 使用redis的setnx实现,setnx key value,当key不存在时,将key的值设为value,并返回1,若给定的key已经存在,则setx不做任何操作,返回0
- redis是单线程命令
排行榜
redis的zset天生就是用来做排行榜的
`
redis使用注意事项 大key与热key
| 数据类型 | 大key标准 |
|---|---|
| string类型 | value的字节数大于10kb即为大key |
| hash/set/zset/list等复杂数据结构 | 元素个数大于5000个或总value字节数大于10mb即为大key |
大key的危害:
- 读取成本高
- 容易导致慢查询(过期、删除)
- 主从复制异常,服务阻塞,无法正常响应请求
业务侧使用大key的表现:
- 请求Redis超时报错
消除大key方法:
1、拆分:将大key拆分为小key,例如一个string拆分成多个string
2、压缩:将value压缩后写入redis,读取时解压后再使用。压缩算法可以是gzip,snappy,lz4等