摘要: 阶段一 代码如下: private Map<String, List<CatelogTwoLevelVo>> getCatalogJsonFromDb() { //得到锁之后,去缓存中再确定一次是否有数据 String catalogJson = redisTemplate.opsForValue( 阅读全文
posted @ 2023-01-31 21:05 不是孩子了 阅读(48) 评论(0) 推荐(0)
摘要: 方案1:使用synchronized (this)加锁(本地锁) Springboot所有组件在容器中都是单例的,this就是我们这个serviceImpl实例,是单例的。当大量请求进行数据库查询时,由于我们加锁了,会先争夺锁。抢到锁的请求去查询数据库,其他请求等待。但是还要注意, 一个请求查询完毕 阅读全文
posted @ 2023-01-31 18:39 不是孩子了 阅读(200) 评论(0) 推荐(0)
摘要: * 1、空结果缓存:解决缓存穿透 * 2、设置过期时间(加随机值):解决缓存雪崩 从上面逻辑可以看出,当redis中为空时,我们查询数据库,不论有没有查到结果,都进行缓存,解决了缓存穿透的问题。 同时设置了随机过期时间解决了可能造成的缓存雪崩问题 阅读全文
posted @ 2023-01-31 18:08 不是孩子了 阅读(10) 评论(0) 推荐(0)
摘要: ![](https://img2023.cnblogs.com/blog/2506674/202301/2506674-20230131174552373-1497495428.png) ![](https://img2023.cnblogs.com/blog/2506674/202301/2506674-20230131174626301-1421623223.png) ![](https:// 阅读全文
posted @ 2023-01-31 17:47 不是孩子了 阅读(25) 评论(0) 推荐(0)
摘要: 我们通过使用jedis进行解决 1、修改依赖 2、使用Jmeter测试,就不会出现内存泄漏了 阅读全文
posted @ 2023-01-31 15:10 不是孩子了 阅读(62) 评论(0) 推荐(0)
摘要: 前面我们是每次都直接从数据库获取,现在将他改成一个方法,然后重新编写service实现类中的方法。 阅读全文
posted @ 2023-01-31 14:15 不是孩子了 阅读(31) 评论(0) 推荐(0)
摘要: 1、导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、redis配置 3、测试 阅读全文
posted @ 2023-01-31 13:54 不是孩子了 阅读(27) 评论(0) 推荐(0)