冰河技术
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
  • 开篇:专栏介绍

    • 开篇:我要带你从零开始手搓一个大厂必备的高性能Redis组件
  • 第01部分:需求设计

    • 第01节:为何要学习高性能Redis组件
    • 第02节:高性能Redis组件的目标与挑战
    • 第03节:高性能Redis组件需求与功能梳理
  • 第02部分:总体架构设计

    • 第01节:高性能Redis组件总体方案目标
  • 第03部分:落地实现

    • 第01节:高性能Redis组件基础功能设计与实现
    • 第02节:高性能Redis组件分布式锁设计与实现
    • 第03节:高性能Redis组件防缓存击穿、穿透和雪崩的核心设计与实现
  • 第04部分:测试验证

    • 第01节:高性能Redis组件单元测试场景验证
    • 第02节:高性能Redis组件基准性能测试
  • 专栏总结

    • 总结:高性能Redis组件整体专栏总结

《高性能Redis组件》落地实现-第01节:高性能Redis组件基础功能设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.site
文章汇总:https://binghe.site/md/all/all.html
源码获取地址:https://t.zsxq.com/0dhvFs5oR

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★☆☆☆☆
  • 本章重点:对高性能Redis组件的基础功能进行设计和实现,主要包括:存储模型和类型转换器,以及高性能Redis组件的基础配置,从总体上理解高性能Redis组件基础功能的设计,并从全局视角了解高性能Redis组件的设计和架构思想,并能够将其灵活应用到自身实际项目中。

大家好,我是冰河~~

从本节开始正式进入高性能Redis组件的编码落地实现篇章。从编码实现中,我会带着大家一步步设计并开发避免缓存击穿、穿透和雪崩问题的代码。整体代码可直接应用于实际生产环境。

一、前言

截止到目前,我们已经明确了高性能Redis组件的需求和流程,对高性能Redis组件的方案目标、总体架构设计和落地方案进行了总体介绍。明确这些事项后,我们就可以进一步对高性能Redis组件的基础功能进行设计和开发。

二、本节诉求

对高性能Redis组件的基础功能进行设计和实现,主要包括:存储模型和类型转换器,以及高性能Redis组件的基础配置,从总体上理解高性能Redis组件基础功能的设计,并从全局视角了解高性能Redis组件的设计和架构思想,并能够将其灵活应用到自身实际项目中。

三、设计思路

高性能Redis组件的基础功能主要包括:数据存储模型、类型转换器和Redis基础配置。

(1)数据存储模型

数据存储模型就是高性能Redis组件中定义的与Redis进行数据交互和存储的基础数据模型。在基础数据模型中,会封装业务层传递的数据,并且会记录数据的过期时间点。

无论业务层的数据结构如何变化,当需要读写Redis时,在高性能Redis组件内部,都会将业务层的数据封装为高性能Redis组件的基础数据模型,然后访问Redis进行读写操作。

在高性能Redis组件中,数据存储到Redis中时,会将当前数据过期的时间点一同存储到Redis,并且设置超时时间。当读取Redis数据时,检测到数据为空时,会异步加锁重建缓存。

在重建缓存的过程中,首先会再次从Redis缓存读取数据,以免前面获取过锁的线程查询DB构建过缓存,后续等待锁的线程获取到锁再次查询DB构建缓存。在重建缓存时,除了判断数据是否为空查询DB构建缓存外,也会通过存储的数据过期时间点判断数据是否过期。

如果当前时间小于数据的过期时间,则说明数据未过期,不再执行重建缓存的逻辑。如果当前时间大于或者等于数据的过期时间,则说明数据已经过期,会查询DB后构建缓存数据。如果从DB中查询的数据为空,为了避免后续每次查询DB不存在的数据时,请求都会穿透到DB,此时,会根据查询的数据类型,例如查询的数据是单个值、对象还是数组或者列表,高性能Redis组件会向Redis存储对应的空值,避免引起缓存击穿、穿透和雪崩问题。

(2)类型转换器

在高性能Redis组件内部,根据方法传递的参数构建缓存的Key和对传递的业务数据进行处理时,都会根据类型转换器判断数据的类型,例如确定数据是简单类型还是复合类型,如果是简单类型,则会对相关的数据进行简单值处理。如果是复合类型,则进一步判断是否可转换成Json,如果可以转换成Json,则将其转换成Json处理。否则,当做简单字符串处理。

(3)Redis基础配置

Redis基础配置就是搭建Redis相关项目时必不可少的基础配置项和相关的配置类。

四、核心类设计

注意:本节只给大家展示高性能Redis组件基础功能的核心类实现关系,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。

高性能Redis组件基础功能的核心类设计如图1-1所示。


可以看到,高性能Redis组件的基础功能主要由RedisData、TypeConversion、RedissonConfig和RedisPoolConfig类组成。

  • RedisData:高性能Redis组件提供的基础数据模型。
  • TypeConversion:类型转换器。
  • RedissonConfig:Redisson相关的配置类。
  • RedisPoolConfig:RedisTemplate相关的配置类。

五、编码实现

本节只给大家展示高性能Redis组件基础功能的核心类编码实现,其他代码的实现细节,大家可以自行到本节对应的源码分支进行查看,这里不再赘述。

查看完整文章

加入冰河技术知识星球,解锁完整技术文章、小册、视频与完整代码

在 GitHub 上编辑此页
上次更新: 2026/4/29 16:18
Contributors: binghe001
Next
第02节:高性能Redis组件分布式锁设计与实现
阅读全文
×

扫码或搜索:冰河技术
发送:290992
即可立即永久解锁本站全部文章

星球会员
跳转链接