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

黑马点评——基于Redis

目录

1.短信登录

1.1基于Session登录(已被Redis代替)

1.2cookie和session

2.添加Redis缓存

2.1根据id查询商户信息

2.2缓存穿透

2.3缓存雪崩


《黑马点评》Redis高并发项目实战笔记【完结】P1~P72_黑马点评笔记-CSDN博客

1.短信登录

1.1基于Session登录(已被Redis代替)

实战篇-04.短信登录-实现发送短信验证码功能_哔哩哔哩_bilibili

1.2cookie和session

最重要的区别在于:

Cookie:存储在客户端浏览器中

Session:存储在服务器端

2.添加Redis缓存

缓存就是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高

缓存作用:降低后端负载;提高读写的效率,降低响应时间

2.1根据id查询商户信息

2.2缓存穿透

缓存穿透是指在使用缓存(例如 Redis、Memcached)时,缓存和数据库中都没有要查询的数据,导致请求每次都直接打到数据库上,造成数据库负载过大,甚至可能导致系统崩溃

缓存穿透的典型场景

  • 用户请求一个数据库中不存在的商品ID、用户ID等
  • 攻击者利用这一点,通过大量不存在的键进行请求,绕过缓存直接攻击数据库

缓存穿透的原因

  1. 缓存中没有数据:对于不存在的数据,缓存不会保存这类数据的缓存
  2. 查询的 Key 存在问题:例如查询一个非法或错误的 Key,导致缓存中未命中
  3. 恶意攻击:攻击者故意构造大量不存在的 Key 来查询,造成数据库压力

缓存穿透的解决方案

1.使用空值缓存

  • 当查询的 Key 在数据库中不存在时,将一个空值或者特定标记存入缓存,并设置较短的过期时间。
  • 优点:简单有效,防止相同的无效请求反复查询数据库。
  • 缺点:可能占用一定的缓存空间,特别是在大量无效 Key 时

2.布隆过滤器(Bloom Filter)

3.限流和防刷

  • 对于频繁访问同一个 Key 的 IP 或用户进行访问限流黑名单处理
  • 使用工具如 Sentinel 等来控制请求频率

在实际开发中,可以结合空值缓存、布隆过滤器和限流防刷三种方法来防止缓存穿透。

  • 简单场景:使用空值缓存
  • 大规模场景:引入布隆过滤器
  • 恶意攻击场景:使用限流和黑名单策略

2.3缓存雪崩

缓存雪崩是指在同一时间大量缓存数据过期失效,导致大量请求直接打到数据库,瞬间使数据库承受巨大压力,甚至可能导致系统崩溃

缓存雪崩的原因:

  • 大量缓存集中过期:如果大量缓存设置了相同的过期时间,一旦这个时间点到达,缓存全部失效,请求会直接涌向数据库。
  • 缓存服务宕机:如果缓存服务(例如 Redis)整体崩溃或不可用,大量请求直接转向数据库。
  • 大量热点数据失效:热点数据突然失效,导致大量用户请求直接访问数据库

解决方案:

  1. (解决大量缓存key同时失效)给不同Key的TTL(Time To Live)添加随机值
  2. (解决Redis宕机)利用Redis集群提高服务的可用性

http://www.lryc.cn/news/510522.html

相关文章:

  • RocketMQ的集群架构是怎样的?
  • VS2022+QT6.7 窗口置灰(遮罩)
  • 如何通过HTTP API插入或更新Doc
  • C++ STM32 F4xx USART LL库 DMA + IDLE ISR 驱动裸机 +FreeRTOS 任务通知
  • RK3588在Android13/14如何查看GPU,NPU,DDR,RGA数据
  • sentinel学习笔记6-限流降级(上)
  • 【Rust自学】6.4. 简单的控制流-if let
  • 【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下
  • Vue项目中env文件的作用和配置
  • 在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)
  • 机器人C++开源库The Robotics Library (RL)使用手册(三)
  • Photoshop启动错误:找不到MSVCP140.dll的多步骤解决指南
  • mac中idea菜单工具栏没有git图标了
  • 学习threejs,PerspectiveCamera透视相机和OrthographicCamera正交相机对比
  • C#数学相关开发性能优化方法
  • 【前沿 热点 顶会】AAAI 2025中与目标检测有关的论文
  • APP投放的归因框架设计
  • 职业生涯记录-1
  • 江苏捷科云:可视化平台助力制造企业智能化管理
  • 【ES6复习笔记】Promise对象详解(12)
  • 01 Oracle 基本操作
  • C语言基础:指针(数组指针与指针数组)
  • 本地部署 LLaMA-Factory
  • Web前端基础知识(三)
  • 数据库设计问题记录
  • mac_录屏
  • 【Java-tesseract】OCR图片文本识别
  • redis cluster集群
  • 解锁高效密码:适当休息,让学习状态满格
  • 代码随想录算法训练营第十一天-150.逆波兰表达式求值