SpringBoot(十一): Spring Boot集成Redis
1、在 pom.xml 中配置相关的 jar 依赖;
<!-- 加载 spring boot redis 包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、在 Springboot 核心配置文件 application.properties 中配置
#配置redis spring.redis.host=localhost spring.redis.password= spring.redis.port=6379
3、配置了上面的步骤,Spring boot 将自动配置 RedisTemplate,在需要操作 redis 的类中注入 redisTemplate; 在使用的类中注入:
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
spring boot 帮我们注入的 redisTemplate 类,泛型里面只能写<String, String>、<Object, Object>
复用上一章集成mybatis的代码
启动测试发现报错,让你后将对对象序列化
生成序列化ID方法如下:
点击即可生成,或者使用快捷键Alt+Enter
5-2 Spring Boot 集成 Redis 测试启动程序,进行访问测试;
设置 key 的序列化方式为字符串,增强 key 的可读性;
访问Controller
查看redis
5-3 高并发条件下缓存穿透问题分析
在项目中使用缓存通常是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库,然后将查询出来的数据缓
存到缓存中,最终返回查询结果; 但是如果大量用户请求查询的某一个数据,而该数据在缓存中不存
在,就会造成大量的用户请求都去查询 DB,这样缓存就失去了意义,在并发流量大时,可能导致 DB 压力过大而失去响应;
5-4 高并发条件下缓存穿透问题复现
按照常规的代码实现方式,多线程并发条件下多个请求落入到了数据库;
5-5 高并发条件下缓存穿透问题处理
通过锁机制,避免请求穿透缓存直接落入到数据库;
解决方式一: 加synchronized 但是这样会导致效率很低,不推荐使用!
解决方法二:双重检测机制 (如果集群的项目,可以了解一下分布式锁)
5-6 高并发条件下缓存穿透问题测试
运行程序,观察是否有多个请求落入到数据库;
Redis 哨兵模式待更新
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 一个适用于 .NET 的开源整洁架构项目模板
· API 风格选对了,文档写好了,项目就成功了一半!
· 【开源】C#上位机必备高效数据转换助手
· .NET 9.0 使用 Vulkan API 编写跨平台图形应用
· .NET 依赖注入中的 Captive Dependency