当前位置: 首页 > article >正文

【入门+总结】万字复盘黑马点评|从业务到 Redis 实战,面试直接背

个人主页北极的代码欢迎来访作者简介java后端学习者❄️个人专栏苍穹外卖日记SSM框架深入JavaWeb✨命运的结局尽可永在不屈的挑战却不可须臾或缺前言黑马点评这个项目已经写完挺长一段时间了里面的内容还是挺多的写的过程也不是很顺很多知识点都挺重要这里我整理了一下这个项目的重点和整体思路可以给大家做一个参考和复习。ps如果想知道详细的原理或者代码可以看看我的专栏黑马点评日记摘要本文总结了黑马点评项目的核心架构与关键技术点。项目基于SpringBootMybatisPlusRedisRedissonMQ构建重点解决了分布式Session、缓存三大问题穿透/击穿/雪崩、高并发秒杀等核心场景。亮点包括Redis实现分布式Session和用户缓存Set结构处理关注/点赞功能ZSet实现排行榜Bitmap优化签到系统Redisson分布式锁MQ异步处理解决秒杀超卖问题。项目涵盖了短信登录、商户查询、社交笔记、优惠券秒杀等模块通过缓存优化、接口限流、异步削峰等手段显著提升系统性能是分布式系统开发的典型实践案例。首先整体的思维导图一、基础架构 全局配置模块其实就是对项目有一个整体的了解分类具体内容核心定位项目底层支撑所有功能的基础技术栈SpringBoot MybatisPlus Redis Redisson MQ全局统一处理全局异常处理器统一捕获业务异常、系统异常返回规范结果响应结果统一封装统一返回码、提示信息、数据体拦截器登录校验拦截未登录请求放行登录、注册接口分布式基础Redis 替代 Tomcat Session实现分布式 Session 共享用户信息缓存到 Redis减少数据库查询ThreadLocal 存储当前登录用户实现全局用户获取主要问题1. 为什么用 Redis 实现分布式 Session问题Tomcat 原生 Session 只在单机有效集群部署时用户登录状态丢失、跳转服务器需要重复登录。解决方案登录成功后将用户信息存入 Redis以 Token 为 Key前端携带 Token 请求拦截器统一从 Redis 获取用户ThreadLocal 存储当前用户实现接口全局无感获取面试加分点减轻服务器内存压力、支持水平扩容、过期自动下线比原生 Session 更适合分布式项目。2. 拦截器为什么不拦截静态资源/登录接口放行登录、注册、验证码接口避免未登录请求被拦截死循环保证游客可访问基础页面。二、用户模块核心登录体系分类具体内容核心业务短信登录、用户管理、关注粉丝短信登录功能重点发送验证码60 秒限流防刷、验证码存入 Redis、设置过期时间登录校验比对 Redis 验证码正确则生成 Token自动注册手机号不存在则自动创建用户会话保持Token 返回前端后续请求携带 Token 认证用户信息管理个人信息查询、修改头像上传文件上传功能关注 / 粉丝功能关注、取关用户查询关注列表、粉丝列表共同关注推荐基于 Redis Set 集合实现高效去重、比对主要问题1. 短信验证码限流核心原理业务痛点恶意刷短信接口、浪费资费、高频攻击。实现方案发送验证码时在 Redis 存入phone:code设置 60s 过期每次请求先判断 Key 是否存在存在直接拒绝实现60秒只能发送一次接口防刷2. 登录/注册一体化设计亮点无需用户主动注册输入手机号验证码即可登录无账号则自动创建账号简化用户操作是主流互联网产品设计思路。3. 关注功能为什么用 SetSet 天然去重防止重复关注支持快速交集查询实现共同关注功能增删查时间复杂度 O(1)性能远高于数据库三、商户模块缓存三大问题核心场景这部分是高难点初学者一开始不太容易理解很容易搞混。核心业务商户查询、缓存优化、分类查询基础功能根据ID查询商户详情分页查询商户列表商户分类查询、热门分类展示缓存经典问题解决项目重中之重缓存穿透查询不存在数据 rarr; 解决方案缓存空值、布隆过滤器缓存击穿热点Key过期瞬间大量请求打库 rarr; 解决方案互斥锁、逻辑过期缓存雪崩大量Key同时过期 rarr; 解决方案TTL随机值、Redis集群、多级缓存缓存更新策略先更新数据库再删除缓存异步更新重难点缓存三大问题缓存穿透、缓存击穿、缓存雪崩原理场景解决方案必须背熟1. 缓存穿透现象请求数据库不存在的数据如恶意ID、负数ID缓存无数据所有请求直接打数据库。解决方案项目实战用缓存空值查询为空Redis缓存null短期过期拦截重复恶意请求布隆过滤器前置拦截不存在的Key彻底杜绝穿透适合大数据量2. 缓存击穿热点Key问题现象热点Key突然过期瞬间海量并发请求直接打崩数据库。两种解决方案互斥锁只有一个请求查数据库其他请求等待安全性高、性能一般逻辑过期项目重点不设置真实过期时间存入过期字段后台异步更新高并发首选无锁高性能3. 缓存雪崩现象大量缓存Key同时过期或Redis宕机大量请求落库。解决方案TTL 随机值避免批量过期Redis集群高可用防止单点宕机多级缓存、服务熔断降级4. 缓存更新策略先更库再删缓存为什么不先删缓存先删缓存会导致并发读脏数据先更新数据库再删除缓存一致性更高是工业级最优方案。ps这里仅仅是大体的总结一下如果想知道具体的实现或者原理可以看我之前的文章高并发秒杀库存超卖与锁机制解析四、探店笔记模块社交核心核心业务发布笔记、点赞、收藏、分页查询笔记基础功能图文笔记发布、图片上传存储笔记详情查询、首页分页流加载点赞功能高频面试点Redis Set存储点赞用户防重复点赞、防取消多次点赞数实时统计点赞排行榜SortedSet实现收藏功能基于Redis实现笔记收藏、取消收藏、收藏列表查询主要问题1. 点赞为什么不用数据库点赞是超高频读写数据库压力大、响应慢Redis读写性能百万级适合高频场景。2. Set结构防重复点赞核心Key笔记IDValue点赞用户ID判断用户是否在Set中存在则取消点赞不存在则点赞完美解决重复点赞、重复取消的BUG3. 点赞排行榜 ZSet 原理以点赞数为 score自动排序无需手动排序实时生成热门笔记榜单五、评论模块核心业务多级评论、分页查询评论发布一级评论针对商户/笔记发布二级回复父子评论结构分页查询评论列表、排序展示关联用户信息展示评论人头像、昵称六、优惠券 秒杀模块高并发核心核心业务普通优惠券、秒杀优惠券、高并发防超卖普通优惠券新增、查询、用户领取、有效期校验秒杀优惠券项目难点库存预加载秒杀开始前将库存写入Redis一人一单Redis判断用户是否已领取限制单用户单次秒杀防超卖Redisson分布式锁 Redis扣减库存削峰填谷RabbitMQ异步下单缓解数据库压力订单超时未支付自动取消、库存回补核心解决问题高并发、超卖、重复下单、数据库压力过大主要问题1.为什么会超卖多线程同时判断库存 0同时扣减数据库事务无法阻止并发并行执行导致库存为负。2. 最终解决方案工业级Redis预减库存拦截90%流量不直接操作数据库Redisson分布式锁保证原子性彻底防超卖一人一单限制Redis标记用户秒杀状态禁止重复抢购RabbitMQ异步削峰秒杀成功后发送消息异步创建订单3. 为什么要用MQ异步下单秒杀瞬时流量极高同步创建订单会直接压崩数据库MQ削峰填谷将瞬时高流量转为平稳流量保证服务可用。4. 订单超时取消机制用户下单未支付定时任务自动关闭订单、归还库存避免库存冻结导致商品无法售卖。psMQ是我们后面要学的是实际业务中用的消息队列七、签到 积分模块Redis高阶用法核心亮点Redis位图、Hash、SortedSet高阶应用用户签到Redis Bitmap位图实现极致节省内存连续签到天数统计、当月签到记录查询积分体系签到送积分、积分累计积分排行榜ZSet有序集合实现实时排名主要问题1. 签到为什么用 Bitmap极致省内存1bit 记录一次签到一年签到仅需几十字节内存远超Hash、String结构。支持快速统计当月签到次数、连续签到天数是Redis经典极致优化案例。2. 积分排行榜 ZSet 优势有序集合自动排序、支持分页、支持实时更新无需数据库排序查询性能碾压DB。Redis 四大核心解决方案 项目性能优化分类具体内容Redis 四大核心解决方案面试必背1. 缓存三大问题穿透、击穿、雪崩的现象 危害 全套解决方案2. 秒杀高并发方案Redis 预减库存 分布式锁 MQ 异步削峰 一人一单3. 分布式 Session 原理 拦截器登录校验流程4. Redis 五大数据结构实战场景String、Set、ZSet、Bitmap、Hash5. 缓存更新策略与数据一致性问题6. 接口限流、防重、防刷实现思路项目性能优化总结查询优化Redis 缓存热点数据减少 DB 查询并发优化分布式锁保证并发安全流量优化MQ 异步削峰抵挡秒杀高流量内存优化Bitmap 签到、Set 去重、ZSet 排序安全优化接口限流、登录拦截、防重复操作结语如果对你有帮助请点赞关注收藏你的支持就是我最大的鼓励

相关文章:

【入门+总结】万字复盘黑马点评|从业务到 Redis 实战,面试直接背

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

【LeetCode刷题日记】617.合并二叉树(空间换安全,还是原地省内存)

🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...

APKToolGUI:让Android逆向变得像搭积木一样简单

APKToolGUI:让Android逆向变得像搭积木一样简单 【免费下载链接】APKToolGUI GUI for apktool, signapk, zipalign and baksmali utilities. 项目地址: https://gitcode.com/gh_mirrors/ap/APKToolGUI 你是否曾经想要修改一个Android应用,却发现需…...

如何用bsf创建第一个3D场景:从零开始的完整教程

如何用bsf创建第一个3D场景:从零开始的完整教程 【免费下载链接】B3DFramework Modern C library for the development of real-time graphical applications 项目地址: https://gitcode.com/gh_mirrors/bs/B3DFramework bsf(B3DFramework&#x…...

Gramophone安全与权限管理:Android 13+存储权限最佳实践

Gramophone安全与权限管理:Android 13存储权限最佳实践 【免费下载链接】Gramophone A sane music player built with media3 and material design library that is following androids standard strictly. 项目地址: https://gitcode.com/gh_mirrors/gr/Gramopho…...

苹果CMS V10终极指南:3步打造专业视频网站,新手也能轻松上手

苹果CMS V10终极指南:3步打造专业视频网站,新手也能轻松上手 【免费下载链接】maccms10 苹果cms-v10,maccms-v10,麦克cms,开源cms,内容管理系统,视频分享程序,分集剧情程序,网址导航程序,文章程序,漫画程序,图片程序 项目地址: https://gitcode.com/gh…...

Qt5 super module网络编程指南:WebSocket、HTTP、MQTT通信实现

Qt5 super module网络编程指南:WebSocket、HTTP、MQTT通信实现 【免费下载链接】qt5 Qt5 super module 项目地址: https://gitcode.com/gh_mirrors/qt/qt5 Qt5 super module是一个功能强大的跨平台应用程序开发框架,提供了丰富的网络编程功能&…...

ng-demos构建工具对比:Grunt vs Gulp在Angular项目中的实战应用

ng-demos构建工具对比:Grunt vs Gulp在Angular项目中的实战应用 【免费下载链接】ng-demos variety of angular demos 项目地址: https://gitcode.com/gh_mirrors/ng/ng-demos 在Angular项目开发中,构建工具的选择直接影响开发效率和项目维护性。…...

MVVMFramework性能优化:让你的iOS应用运行如飞的10个技巧

MVVMFramework性能优化:让你的iOS应用运行如飞的10个技巧 【免费下载链接】MVVMFramework (OC版)总结整理下一个快速开发框架,以更优雅的方式写代码,做一个代码艺术家。分离控制器中的代码,已加入cell自适应高度,自动缓…...

独立开发者如何利用Taotoken同时管理多个AI项目的模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken同时管理多个AI项目的模型调用 对于独立开发者而言,同时维护多个小型产品是常态。每个产品…...

ElevenLabs支持广西话吗?2024最新实测结果曝光:仅2个API参数决定能否合成地道“梧州腔”

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs广西话语音支持的现状与背景 ElevenLabs 作为全球领先的AI语音合成平台,目前尚未在官方API文档、语言列表或控制台界面中提供对广西话(含南宁白话、梧州话、玉林话等粤…...

Rust-Bio 生物信息学库入门指南:5个简单步骤快速上手

Rust-Bio 生物信息学库入门指南:5个简单步骤快速上手 【免费下载链接】rust-bio This library provides implementations of many algorithms and data structures that are useful for bioinformatics. All provided implementations are rigorously tested via co…...

MATLAB CGCS2000高斯投影坐标转经纬度坐标

坐标系转换这边需要用到mapping toolbox 首先根据原始(x,y)坐标对应的投影坐标系查询EPSG编号 例如这边CGCS2000 / 3-degree Gauss-Kruger CM 123E的编号就是4450 对应的编号可以https://blog.csdn.net/qq_41441896/article/details/104525296在这篇博…...

SABIC工程塑料创新材料解决方案与发展前景分析

SABIC工程塑料凭借其卓越的耐高温性、机械强度及化学稳定性,成为高端制造领域不可或缺的创新材料解决方案。其未来发展将深度契合汽车轻量化、5G通信及新能源产业升级需求,市场前景广阔。工程塑料作为高端制造业的核心基础材料,其性能直接决定…...

SABIC原GE塑料原料全面解析与市场应用

SABIC原GE塑料原料凭借其卓越的性能稳定性与广泛的应用适配性,成为众多制造企业的优选材料。作为国际一线工程塑料品牌,其产品涵盖PETG、PCTGG、PC、PA66等全品类,通过源头直采模式可为下游企业降低15%-18%采购成本,并提供全流程技…...

深度解析沙伯基础创新塑料:年度十大高口碑产品权威榜单揭晓新选择

在制造业转型升级的关键节点,工程塑料作为工业生产的"粮食",其品质稳定性与供应链效率直接关乎企业核心竞争力。然而当前市场存在明显的价值悖论:一方面下游企业对高性能材料需求持续攀升,另一方面却陷入"高价采购…...

SABIC塑料:2026年精选十大高品质产品权威榜单揭晓,重塑行业新选择

在制造业转型升级的关键节点,工程塑料作为工业生产的"粮食",其品质稳定性与供应链效率直接关乎企业核心竞争力。然而行业长期存在的信息壁垒与价值陷阱,让许多采购决策陷入"高价换低效"的困境——据中国塑料加工工业协会…...

【YOLO全系列架构演进史】2 YOLOv8:解耦头、Anchor-free与多任务统一框架

YOLOv8:解耦头、Anchor-free与多任务统一框架 1.1 总体定位与认知地图 1.1.1.1 我们为什么需要重新理解YOLOv8 YOLOv8在2023年发布时,很多人以为它只是YOLOv5的增量升级。但如果我们把神经网络看作一条工厂流水线,YOLOv8实际上把整条流水线的三个核心工位都换了:原料处理…...

为什么你的DeepSeek微调收敛慢?揭秘Attention初始化偏差导致的3轮内loss震荡——附自动校准工具脚本

更多请点击: https://intelliparadigm.com 第一章:DeepSeek注意力机制优化 DeepSeek系列模型在长上下文建模中对标准Transformer注意力进行了系统性重构,核心聚焦于降低计算复杂度与提升内存局部性。其注意力优化并非单一技术点叠加&#xf…...

DeepSeek V2多模态支持真相(官方未公开的API隐藏能力全披露)

更多请点击: https://codechina.net 第一章:DeepSeek V2多模态支持真相(官方未公开的API隐藏能力全披露) DeepSeek V2 官方文档明确声明为纯文本大模型,但逆向分析其生产环境 API 流量与响应头后发现:其底…...

“我35岁,年薪50万,却觉得自己是个‘废人’”

你有过那种感觉吗?回头一看,工作了十年,简历上好像什么都做过,但心里却虚得要命,觉得自己随时可以被替代。尤其是当“35岁”这个魔咒般的年龄落在你头上时,这种恐慌感在深夜会加倍袭来。凌晨两点&#xff0…...

企业级Sora 2 API接入终极 checklist:23项必检项(含AWS/Azure/GCP三云环境差异对照表)

更多请点击: https://intelliparadigm.com 第一章:企业级Sora 2 API接入终极 checklist:23项必检项(含AWS/Azure/GCP三云环境差异对照表) 接入企业级 Sora 2 API 前,必须完成覆盖身份认证、网络策略、合规…...

2026年,揭秘浙江废铝回收界的明星企业!

引言:废铝回收,绿色循环的先锋随着我国经济的快速发展和工业生产的不断扩大,废铝回收行业逐渐成为资源循环利用的重要环节。在浙江省,众多废铝回收企业脱颖而出,其中腾兰再生资源回收有限公司以其卓越的表现&#xff0…...

服务间鉴权的方式

服务间鉴权的方式1. API Key(静态密钥)Java 中如何生成随机数:什么是 LCG?/dev/random 和 /dev/urandom 详解1. Math.random() —— 绝对禁用2. java.util.Random —— 明文禁止(安全场景)3. java.security…...

爆仓价格系数推导

多仓 爆仓条件&#xff1a;账户权益 < 维持保证金 即&#xff1a; Equity Maintenance Margin对于一个仓位&#xff1a; 多仓 权益&#xff1a; 权益 初始权益 (当前价 - 开仓价) 数量因为&#xff1a; 价格上涨赚钱。 空仓 权益&#xff1a; 权益 初始权益 (开仓价 -…...

如何高效管理华硕笔记本性能:G-Helper轻量级控制工具完整指南

如何高效管理华硕笔记本性能&#xff1a;G-Helper轻量级控制工具完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...

Vue-Tree-List 实战指南:构建现代化树形结构的终极方案

Vue-Tree-List 实战指南&#xff1a;构建现代化树形结构的终极方案 【免费下载链接】vue-tree-list &#x1f332;A vue component for tree structure 项目地址: https://gitcode.com/gh_mirrors/vu/vue-tree-list 在现代前端开发中&#xff0c;树形结构是处理层级数据…...

FPGA 时序优化理论手册

定位:为时序优化手册中每一条规则、每一段代码背后的"为什么"提供物理直觉与数学原理 阅读方式:先读本手册建立理解,再回看时序优化手册对应的操作和代码 目录 第 1 部分 时序分析的物理基础第 1 章 数字电路中的时间:从晶体管到时序公式第 2 章 建立时间与保…...

深度拆解:TypeScript 大神把 .claude 目录开源,18 个 Skill 是给 AI 编程踩刹车的工程纪律

2026 年 4 月底&#xff0c;Total TypeScript 创始人、TypeScript 社区教父级人物 Matt Pocock 干了一件挺简单的事——把他个人 .claude 目录下的全部 Agent Skills 开源了。仓库叫 mattpocock/skills&#xff0c;副标题只有一句话&#xff1a;Skills for Real Engineers。一个…...

AI动态简报之技术前沿篇(2026.05.22)

&#x1f4c5; 2026年5月22日 | 关注方向&#xff1a;AI技术突破 大模型创新 AI Agent 生成式AI 多模态AI &#x1f525; 第1条&#xff1a;谷歌I/O 2026三箭齐发——Gemini 3.5 Flash速度碾压4倍、Spark全天候Agent、Omni全栈多模态 核心内容&#xff1a; 谷歌I/O 2026以…...