[redis-大厂程序员如何使用|青训营笔记]

82 阅读2分钟

[redis-大厂程序员如何使用|青训营笔记]
这是我参加「第五届青训营」伴学笔记的第十五天

前言
记录青训营后端专场的学习过程,有不足的地方还请大佬指正。
由于本人基础比较薄弱,所以笔记尽可能的详细。

该文章开始的版本将以简述课程知识点为主,等后面实践有自己的理解后会编辑添加自己的理解

为何需要redis

截屏2023-03-01 00.30.29.png

  • 数据从单表,演进出了分库分表
  • MYSQL从单机演进出了集群,导致了数据量增长,读写数据的压力不断增加
  • 数据分冷热,热数据即经常被访问的数据
  • 将热数据存储在内存中

redis使用案例

分布式锁
并发场景:要求一次只能有一个协程执行。执行完成后,其他等待中的协程才能执行

  • 使用redis的setnx实现,setnx key value,当key不存在时,将key的值设为value,并返回1,若给定的key已经存在,则setx不做任何操作,返回0
  • redis是单线程命令

排行榜
redis的zset天生就是用来做排行榜的

截屏2023-03-01 00.46.35.png `

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等