后端基础班Day8-Redis | 青训营笔记

47 阅读2分钟

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

本篇笔记主要记录一下Redis的学习知识

1.Redis是什么?

Redis(Remote Dictionary Server - 远程数据字典服务器)。数据存在内存,读写速度快,提供Nosql服务。

2.Redis基本工作原理

image.png

其中AOFRDB是两种不同的持久化方式。

  • RDB

功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数

image.png

  • AOF

每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用, 这个函数执行以下两个工作。

AOF写入保存:

WRITE:根据条件,将 aof_buf 中的缓存写入到 AOF 文件

SAVE:根据条件,调用 fsync 或 fdatasync 函数,将 AOF 文件保存到磁盘中。

其实是一个只进行追加操作的日志文件(append only log),通过重新进行操作还原数据。

image.png

3.几个Redis应用案例

1.连续签到

通过Redis的过期key机制,从而完成相关场景需求。对某个用户的签到存储,采用key存储用户id,value存储用户连续签到天数,并且加以设置该key的过期时间,如果超过一天没有打卡,则自动过期从而完成连续签到次数为0的实现。

2.消息通知

采用list数据结构作为消息队列。

image.png

3.计数

采用hash数据结构完成需求。

通过key独特用户id,内部存储需要进行计数的数据即可。

image.png

4.排行榜

采用跳表数据结构完成需求。

通过key操作跳表来实现。

5.限流

对同一秒内的请求进行计数,如果超出N,则禁止访问。

对key进行incr操作,之后再进行判断,key使用时间戳

6.分布式锁

image.png

4.注意事项

1.大key、热key

  • 大key:value的字节数大于10KB(String类型),元素个数大于5000个或总value字节数大于10MB(Hash/Set/Zset/List等复杂数据结构
  • 热key:访问一个key的QPS特别高,导致Server实例出现CPU负载突增或者不均的情况

主要出现的问题就是访问过频或者访问耗时长,需要进行优化从而提高效率。

  • 大key解决方法:拆分、压缩、区分冷热(集合型结构
  • 热key解决方法:设置localcache(本地缓存)、拆分

2.慢查询

3.缓存穿透、缓存雪崩

image.png

人生苦短,不如go浪一下。