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

Spring Boot使用Redis常用场景

Spring Boot使用Redis常用场景


一、概述:Redis 是什么?为什么要用它?

Redis(Remote Dictionary Server)是一个内存中的数据存储系统(类似一个“超级大字典”),它能存各种类型的数据(字符串、列表、哈希等),而且读写速度极快(因为数据存在内存里)。
简单说,Redis 就像电脑的“缓存抽屉”:当你的程序需要频繁读取或修改某些数据时(比如用户登录信息、商品销量),直接从 Redis 里拿,比从硬盘的数据库(如 MySQL)里拿快 10 倍甚至 更多倍!

二、Redis 支持的数据类型(5种最常用)

Redis 能存很多种“结构”的数据,就像不同形状的盒子,装不同的东西:

类型特点举例场景
字符串(String)最基础类型,存文本或数字(比如 “张三” 或 “100”)存用户手机号、商品库存数量
哈希(Hash)类似“小字典”,存键值对的集合(比如 {“name”:“张三”, “age”:18})存用户详细信息、商品属性
列表(List)有序的字符串列表(类似数组,可从左/右添加元素)存朋友圈动态列表、日志队列
集合(Set)无序、不重复的字符串集合(类似数学里的集合)存用户点赞的商品ID(去重)
有序集合(ZSet)类似集合,但每个元素有“分数”(按分数排序)存排行榜(比如积分排名)
三、Redis 的常见使用场景

Redis 能解决很多实际问题,最常用的 4 种场景:

  1. 缓存(最常用!):把高频访问的数据(比如商品详情、首页广告)存到 Redis,减少数据库查询次数。
  2. 计数器:用 Redis 的 INCR 命令(类似 +1 操作)统计文章阅读量、视频播放量,比数据库的 +1 快很多。
  3. 会话共享:多个服务器(比如 A 服务器和 B 服务器)共享用户登录状态(存 Redis 里,不用每个服务器单独存)。
  4. 分布式锁:在秒杀活动中,用 Redis 保证同一时间只有 1 个请求能修改库存(防止超卖)。
四、实际业务举例:商品详情页缓存

需求:用户访问商品详情页时,先从 Redis 查缓存;如果没有,再查数据库,并把结果存到 Redis(避免频繁查数据库)。

实现步骤

  1. 用户访问商品详情页(比如商品ID是 1001);
  2. 程序先查 Redis 是否有 product:1001 的缓存;
  3. 如果有,直接返回缓存数据;
  4. 如果没有,查 MySQL 数据库,拿到商品详情;
  5. 把商品详情存到 Redis(设 30 分钟过期),再返回给用户。
@Service
public class ProductService {@Autowiredprivate ProductMapper productMapper;  // 操作数据库的类(假设已定义)@Autowiredprivate RedisTemplate<String, Object> redisTemplate;public Product getProductDetail(Long productId) {String key = "product:" + productId;// 1. 先查 Redis 缓存Product product = (Product) redisTemplate.opsForValue().get(key);if (product != null) {return product; // 缓存有数据,直接返回}// 2. 缓存没有,查数据库product = productMapper.selectById(productId); // 3. 把数据库结果存到 Redis(设 30 分钟过期)if (product != null) {redisTemplate.opsForValue().set(key, product, 30, TimeUnit.MINUTES);}return product;}
}
五、总结:使用 Redis 的注意事项
  1. 缓存过期时间:一定要给缓存设过期时间(比如 30 分钟),否则 Redis 内存会被占满!
  2. 避免缓存击穿:高并发时,如果某个热点缓存突然过期(比如秒杀商品),会导致大量请求同时查数据库。可以用“分布式锁”(比如 Redis 的 setIfAbsent 命令)保证只有 1 个请求查数据库,其他请求等缓存更新。
  3. 数据一致性:如果数据库数据修改了,要及时删除或更新 Redis 里的旧缓存(比如用户修改了商品价格,要删除 product:1001 的缓存)。
  4. 内存监控:用 redis-cli 命令(或可视化工具如 RedisDesktopManager)监控内存使用情况,避免内存不足。

相关文章:

  • 什么是营销网站网络营销与传统营销的整合
  • 2018做网站 工具襄阳seo培训
  • 建设网站好处网站提交收录软件
  • 福建住房和城乡建设局网站网站推广app软件
  • 网站内容设计seo服务是什么意思
  • centos建WordPress外汇seo公司
  • 代码随想录|图论|04广度优先搜索理论基础
  • Vue 3 最基础核心知识详解
  • Go语言与云原生:Kubernetes Operator开发全流程
  • docker 安装Elasticsearch + kibana + ik分词器
  • Golang单例实现
  • Spring学习笔记【8】
  • 八股文——JAVA基础:基本数据类型与包装类的区别
  • 【Ansible】Ansible入门
  • 数的范围(连续数字边界)
  • OceanBase向量检索在货拉拉的探索和实践
  • 论文阅读:A Survey on Large Language Models for Code Generation
  • PYTHON从入门到实践5-列表操作
  • DDNS-GO 使用教程:快速搭建属于自己的动态域名解析服务(Windows 版)
  • SpringBoot基于JavaWeb的城乡居民基本医疗信息管理系统
  • 《汇编语言:基于X86处理器》第4章 复习题和练习,编程练习
  • 工作流引擎技术方案<初版>
  • 逆向入门(8)汇编篇-rol指令的学习
  • JVM 中的 GC 算法演进之路!(Serial、CMS、G1 到 ZGC)
  • 基于 opencv+yolov8+easyocr的车牌追踪识别
  • WinAppDriver 自动化测试:Python篇