redis学习 | 青训营笔记

34 阅读2分钟

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

后续大项目要用到redis,这里开始学习。

redis是什么?

因为数据量增加,读写数据压力的不断增加。冷热数据需要分离,将热数据存储到内存中。

image.png

redis原理:

  • 将热数据保存到内存中进行读写,再将数据同步至数据库及硬盘上防止重要数据丢失。
  • AOF增量数据持久化方案和RDB全量数据持久化方案。
  • 单线程处理所有操作。

redis应用案例

  • 连续签到,通常用sds的数据结构,可以存储字符串、数字、二进制数据。适合于存储计数和session
  • 消息通知,例如当文章更新时,将更新后的文章推送到ES,用户就能搜索到最新的文章数据。使用List数据结构。
  • 计数:一个用户有多项计数需求,可用hash结构存储。数据结构dict,还可通过渐进式rehash避免阻塞。
  • 排行榜:积分变化时,排名要实时变更。结合dict后,可实现通过key操作跳表的功能。zset数据结构。
  • 限流:要求1秒内放行的请求为N,超过N则禁止访问。
  • 分布式锁:并发场景,要求一次只能有一个协程执行。执行完成后,其他等待中的协程才能执行。

redis使用的注意事项。

  • 大key和热key:value的字节数大于10kb即为大key,元素个数大于5000个或总value字节数大于10MB即为大key
  • 大key危害:读取成本高,容易导致慢查询(过期、删除),主从无法复制服务阻塞。请求redis超时报错。
  • 热key:用户访问一个key的QPS特别高,导致server实例出现CPU负载突增或不均的情况。热key没有明确的标准,QPS超过500就有可能被识别为热key。

总结:

后续还有慢查询、缓存击穿等可能的问题。下一笔记中记录。