这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
此笔记的主要内容如下
- Redis是什么:为什么需要Redis,Redis的基本工作原理
- Redis应用案例:通过案例,了解Redis的实际应用场景,并介绍Redis常用数据结构
- Redis使用注意事项:在字节跳动使用Redis有哪些注意事项
什么是Redis
为什么需要Redis
随着数据量增加以及业务量场景的不断扩充,读写数据的压力不断增加,MySQL从单机演进出了集群。
数据从内存中读取时比较快的,从数据库中读取速度较慢。数据分冷热,热数据就是经常被访问到的数据,将热数据存储到内存中,这样在读取时直接从内存中读,响应速度快。
Redis基本工作原理
数据从内存中读写,数据保存到硬盘上防止重启数据丢失
- 增量数据保存到AOF文件(Append of File)
- 全量数据保存在RDB文件
宕机后重启,读取时取出的RDB文件,对比RDB文件之后有没有未执行的命令,如果有,则加载AOF文件,将未执行命令加载到RDB文件后
Redis是个单线程处理所有操作命令的
List数据结构—Quicklist
Quicklist由一个双向链表和listpack实现
上层是一个基础的双向链表,下方是listpack
listpack开辟了一个内存空间
Hash数据结构—dict
渐进式rehash,基本原理是,每次用户访问时都会迁移少量数据。将整个迁移过程平摊到所有的访问用户请求过程中
zset数据结构—zskiplist
分布式锁
并发场景,要求一次只能有一个协程执行。执行完成后,其它等待中的协程才能执行
可以使用redis的setnx实现,利用了两个特性:Redis是单线程执行命令,setnx只有未设置过才能执行成功。