TreeMind树图在线AI思维导图

Redis思维导图

  收藏
  分享
免费下载
免费使用文件
U733409368 浏览量:372023-05-03 13:35:00
已被使用3次
查看详情Redis思维导图

Redis

树图思维导图提供 Redis 在线思维导图免费制作,点击“编辑”按钮,可对 Redis  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:3da90425715a9131b1ee7b212346930a

思维导图大纲

Redis思维导图模板大纲

基础篇

1.Redis入门

1.1.认识Nosql

1.2.认识Redis

1.3.安装

1.4.命令行客户端演示

1.5.图形化客户端演示

2.Redis常见命令

2.1.Redis数据结构介绍

2.2.通用命令

2.3.String类型

2.4.Hash类型

2.5.List类型

2.6.Set类型

2.7.SortedSet类型

3.Redis客户端

3.1.Jedis快速入门

3.2.Jedis连接池

3.3.SpringDataRedis快速入门

3.4.RedisSerializer配置

3.5.StringRedisTemplate

实战篇

4.1.短信验证码的登录注册功能

4.1.1.搭建黑马点评项目

4.1.2.基于session的短信登录

4.1.3.集群下的session共享问题

4.1.4.Redis实现共享session

4.1.5.Redis实现session的刷新问题

4.2.商家查询的缓存功能

4.3.1.认识缓存

什么是缓存?

一种具备高效读写能力的数据暂存区域

缓存的作用?

降低后端负载

提高服务读写响应速度

缓存的成本?

开发成本

运维成本

一致性问题

4.3.2.添加redis缓存

4.3.3.缓存更新策略

三种策略

内存淘汰

Redis自带的内存淘汰机制

过期淘汰

利用expire命令给数据设置过期时间

主动更新

主动完成数据库与缓存的同时更新

策略选择

低一致性需求

内存淘汰或过期淘汰

高一致性需求

主动更新为主

过期淘汰兜底

主动更新的方案

Cache Aside

缓存调用者在更新数据库的同时完成对完成的更新

一致性良好

实现难度一般

Read/Write Through

缓存与数据库集成为一个服务,服务保证两者的一致性,对外暴露API接口。调用者调用API,无需知道自己操作的是数据库还是缓存,不关心一致性。

一致性优秀

实现复杂

性能一般

Write Back

缓存调用者的CRUD都针对缓存完成。由独立线程异步的将缓存数据写到数据库,实现最终一致

一致性差

性能好

实现复杂

Cache Aside的模式选择

更新缓存还是删除缓存?

更新缓存会产生无效更新,并且存在较大的线程安全问题

删除缓存本质是延迟更新,没有无效更新,线程安全问题相对较低

先操作数据库还是缓存?

先更新数据,再删除缓存

在满足原子性的情况下,安全问题概率较低

先删除缓存,再更新数据库

安全问题概率较高

如何确保数据库与缓存操作原子性?

单体系统

利用事务机制

分布式系统

利用分布式事务机制

最佳实践

查询数据时

1.先查询缓存

2.如果缓存命中,直接返回

3.如果缓存未命中,则查询数据库

4.将数据库数据写入缓存

5.返回结果

修改数据库时

1.先修改数据库

2.然后删除缓存

确保两者的原子性

4.3.4.缓存穿透

产生原因

客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库

解决方案

缓存空对象

思路

对于不存在的数据也在Redis建立缓存,值为空,并设置一个较短的TTL时间

优点

实现简单,维护方便

缺点

额外的内存消耗

短期的数据不一致问题

布隆过滤

思路

利用布隆过滤算法,在请求进入Redis之前先判断是否存在,如果不存在则直接拒绝请求

优点

内存占用少

缺点

实现复杂

存在误判的可能性

其它

做好数据的基础格式校验

加强用户权限校验

做好热点参数的限流

4.3.5.缓存雪崩

产生原因

在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。

解决方案

给不同的Key的TTL添加随机值

利用Redis集群提高服务的可用性

给缓存业务添加降级限流策略

给业务添加多级缓存

4.3.6.缓存击穿(热点Key)

产生原因

热点Key

在某一时段被高并发访问

缓存重建耗时较长

热点key突然过期,因为重建耗时长,在这段时间内大量请求落到数据库,带来巨大冲击

解决方案

互斥锁

思路

给缓存重建过程加锁,确保重建过程只有一个线程执行,其它线程等待

优点

实现简单

没有额外内存消耗

一致性好

缺点

等待导致性能下降

有死锁风险

逻辑过期

思路

热点key缓存永不过期,而是设置一个逻辑过期时间,查询到数据时通过对逻辑过期时间判断,来决定是否需要重建缓存

重建缓存也通过互斥锁保证单线程执行

重建缓存利用独立线程异步执行

其它线程无需等待,直接查询到的旧数据即可

优点

线程无需等待,性能较好

缺点

不保证一致性

有额外内存消耗

实现复杂

4.3.7.缓存工具封装

4.3.秒杀优惠券功能

4.4.1.秒杀优惠券的基本实现

4.4.2.超卖问题

4.4.3.基于乐观锁解决超卖问题

乐观锁和悲观锁

4.4.秒杀的一人一单限制功能

4.5.1.实现秒杀的一人一单限制

4.5.2.单机模式下的线程安全问题

4.5.3.集群模式下的线程安全问题

4.5.4.分布式锁

分布式锁原理

Redis的String结构实现分布式锁

锁误删问题

锁的原子性操作问题

Lua脚本解决原子性问题

Lua语法

redis的Lua脚本

RedisTemplate调用Lua脚本

Redisson分布式锁

Hash结构解决锁的可重入问题

发布订阅结合信号量解决锁重试问题

watchDog解决锁超时释放问题

4.5.6.基于分布式锁实现一人一单

4.5.Redis实现秒杀优化

4.6.1.基于Redis实现秒杀减库存

4.6.2.基于Redis的一人一单限制

4.6.3.基于阻塞队列的异步下单

4.6.秒杀的异步优化

4.7.1.基于消息队列的异步下单思路

4.7.2.基于List结构的消息队列

4.7.3.基于PubSub的消息队列

4.7.4.基于stream的消息队列

4.7.5.Redis作为消息队列的3种方式对比

4.7.6.基于Stream消息队列实现异步秒杀下单

4.7.达人探店功能

4.8.1.分享探店图文

4.8.2.点赞功能

4.8.3.基于List实现点赞用户列表TOP10

4.8.4.基于SortedSet实现点赞排行榜

4.8.关注列表

4.9.1.关注列表实现原理

4.9.2.添加关注

4.9.3.共同关注列表

4.9.4.取消关注

4.9.5.探店推送功能

4.9.签到功能

4.10.1.BitMap原理

4.10.2.实现签到功能

4.10.3.实现补签功能

4.10.4.统计连续签到天数

4.10.UV统计功能

4.11.1.UV统计的基本思路

4.11.2.HypeLogLog实现统计

4.11.附近的店铺功能

4.12.1.GEO基本用法

4.12.2.获取附近的店铺

高级篇

1.Redis持久化

1.1.RDB持久化演示

1.2.RDB持久化原理

1.3.AOF持久化演示

1.4.AOF与RDB对比

2.Redis主从

2.1.主从集群结构

2.2.搭建主从集群

2.3.主从全量同步原理

2.4.主从增量同步原理

3.Redis哨兵

3.1.哨兵作用和工作原理

主观和客观下线

选举原理

故障转移

3.2.搭建哨兵集群

3.3.RedisTemplate连接哨兵集群

4.Redis分片集群

4.1.搭建分片集群

4.2.散列插槽原理

4.3.集群伸缩

添加节点

插槽迁移

删除节点

4.4.集群故障转移

4.5.RedisTemplate访问分片集群

4.6.集群模式下的常见问题及解决方案

5.Redis多级缓存实战

5.1.多级缓存架构

5.2.JVM进程缓存

导入Demo数据

导入Demo工程

初识Caffeine

实现进程缓存

5.3.OpenResty

安装

快速入门

获取请求参数

发送http请求

基于id的负载均衡

Redis缓存预热

查询Redis

Nginx本地缓存

5.4.缓存同步

同步策略分析

Canal实现缓存同步

6.Redis性能优化

业务层面的最佳实践

运维层面的最佳实践

原理篇

1.Redis底层数据结构

string

RedisObject

SDS

RAW

EMBSTR

INT

hash

ziplist

hashTable

list

quickList

linkedList + zipList

set

inset

hashTable

sorted_set

ziplist

hashtable + skiplist

hyperloglog

streams

rax

listpack

geohash

2.线程模型

2.1.单线程阻塞IO

2.2.多线程阻塞IO

2.3.非阻塞IO

2.4.IO多路复用

2.5.NIO线程模型

单Reactor

多Reactor

2.6.Redis线程模型

3.Redis通信协议

3.1.交互规范

字符串

整型

多行

错误

数组

null

3.2.手写Redis客户端

4.内存淘汰策略

4.1.Redis内存淘汰策略

4.2.LRU算法介绍

4.3.实现LRU算法

5.Redis热点面试题总结

相关思维导图模板

Redis第四课内容讲解脑图思维导图

树图思维导图提供 Redis第四课内容讲解脑图 在线思维导图免费制作,点击“编辑”按钮,可对 Redis第四课内容讲解脑图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:4a8369b9c9e59f04ce0af18c508c5dec

Redis0事务乐观悲观锁脑图思维导图

树图思维导图提供 Redis0事务乐观悲观锁脑图 在线思维导图免费制作,点击“编辑”按钮,可对 Redis0事务乐观悲观锁脑图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:edd90f485fd35db71d6124897ee028f3