认识Redis
2025-12-28 18:58:39 0 举报
AI智能生成
Redis
作者其他创作
大纲/内容
数据结构
常规数据结构
String
Hash
List
Set
Zset
高级数据结构
BitMap
Hyperloglog
Geo
Stream
stack
Bloom filter
Search And Query
Cuckoo filter
Redis JSON
高可用
性能压测脚本
淘汰策略
持久化机制
主从复制集群
哨兵模式集群
Cluster集群
多级缓存
什么是多级缓存架构
为什么需要多级缓存
减少网络请求、提高性能
分布式系统中,天然分布式缓存
减少远程缓存压力
将风险分层,避免异常雪崩效应
什么场景会用到多级缓存
热点商品详情页
热搜
热门帖子
热门用户主页
高并发场景
什么是热点数据
时间区分
有限时间
流量高聚
预期
有预期
比如在电商活动中的爆款上面,或者秒杀场景
无预期
比如受到黑客攻击,网络爬取
怎么检测热点数据
单机应用可以设计一个滑动窗口计数器,统计单位时间内访问总数,并通过一个集合存放检测到的热KEY
分布式服务
热点规则:配置热key的上报规则,圈出需要重点检测的KYE
热点上报:应用服务将自己的热key访问情况上报给集中计算单元
热点统计:收集各个应用实例上报的信息,使用滑动窗口算法计算Key的热度
热点推送:当Key的热度达到设定值使,推送Key信息到所有应用实例
热点缓存:各应用实例收到热Key信息后,对Key值进行本地缓存。
双写一致性
JD-hotkey框架
框架图
主要组件
etcd集群
client端jar包
worker端集群
dashboard控制台
执行流程
应用实例怎么设计
数据倾斜
版本对比
Redis6.0
Redis7.0
事务
线程模型
概念
Redis采用单线程事件循环作为其核心处理模型,但并不意味着Redis是纯粹的单线程程序。
主处理采用单线程
后台任务采用多线程辅助
持久化线程
懒惰删除
子主题
Redis6.0+引入多线程IO
为什么选择单线程
避免竞争条件,无序锁开销,降低复杂度,天然原子操作
Redis性能瓶颈通常是内存和网络
避免多线程上下文切换开销
单线程可以更好的利用CPU缓存局部性
核心架构
IO多路复用
epoll
监听链接请求>>分配链接给IO线程>>从IO线程接收解析好的命令>>单线程执行命令>>将结果交给IO线程回写
socket必须就绪才能执行,这一步其实是多路IO,最终执行是单线程
原子指令集
复合指令集
Redis事务命令
Pipeline管道
lua脚本
Redis Function
分布式锁
原始命令
实现方案
问题
Redisson
基本使用
核心特性
深度解析
获取锁流程
核心lua脚本分析
看门狗机制
锁释放流程
公平锁
读写锁
红锁
可重入
分布式锁能保证幂等性吗?
在分布式锁对性能优化
锁粒度
超时时间设置
分段锁
问题
锁失踪
与zookeeper锁对比
并发重建
常见问题
缓存击穿
缓存穿透
缓存雪崩
BigKey
0 条评论
下一页