Redis — 大厂程序员是怎么用的 | 青训营笔记

64 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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实现

image.png

上层是一个基础的双向链表,下方是listpack

listpack开辟了一个内存空间

Hash数据结构—dict

渐进式rehash,基本原理是,每次用户访问时都会迁移少量数据。将整个迁移过程平摊到所有的访问用户请求过程中

zset数据结构—zskiplist

分布式锁

并发场景,要求一次只能有一个协程执行。执行完成后,其它等待中的协程才能执行

可以使用redis的setnx实现,利用了两个特性:Redis是单线程执行命令,setnx只有未设置过才能执行成功。