实际项目中redis缓存的使用

分享几个实际项目中的redis缓存使用案例,从中我们可以看到redis作为一种nosql型数据库,它本身具有的优越性

案例一:

使用场景描述:验证码登录,获取手机验证码,使用验证码登录系统
如图先将随机生成的6位验证码,先放到redis缓存中,设置这个验证码的失效时间为1分钟,然后登录的时候,直接从缓存中取值验证即可
在这里插入图片描述
在这里插入图片描述

案例二:

使用场景描述:客户反馈调用接口返回太慢,需要优化 经过代码排查,发现有两个原因造成接口返回数据速度慢

问题一、sql语句太复杂 看下图 这么复杂的sql查询四五秒实属正常,一般人很快就会联想到优化sql,但考虑到SQL语句的复杂程度,尽量避免改sql,否则会带来不必要的麻烦。在这里插入图片描述一级分类查询及耗时
在这里插入图片描述
二级分类查询及耗时
问题二、业务逻辑中对一二级分类进行了嵌套循环查询,一条sql查询就那么耗时那么长,循环查询查询多次,导致了接口返回速度缓慢
在这里插入图片描述
解决方案
考虑到redis支持的数据类型丰富,速度快,可以直接把返回的list放到redis缓存中,当用户来调用接口是先判断redis中有没有对应的数据,如果有直接返回redis中的数据
如图将查询的数据先查询一遍,然后放到redis中,设置redis的失效时间为一天,这里可以定义一个定时器,在每天的规定时间查询一次放入redis。
在这里插入图片描述
在这里插入图片描述
接口设计如下:
当调用接口的时候,先查询一下redis中是否有对应的数据,如果有之间返回redis中的数据,如果没有在查询,然后此时将查询的结果保存到redis中,当再次调用这个接口时就会快速返回数据。
在这里插入图片描述
以上是我所经历的redis在实际项目中的应用,使用redis解决这类问题,能够大幅度提高服务器的性能,减轻服务器的压力,给用户最好的体验。redis作为当下做流行的nosql数据库,有着它本身的优势,redis的特点如下:

redis的特点:
1.内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.Redis支持的数据类型丰富,Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset
3.Redis支持数据的备份,即master-slave模式的数据备份。
4.支持事务 Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行
5.丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性

在Spring Boot项目使用Redis作为缓存可以显著提高应用程序性能,减少数据库访问次数。以下是Spring Boot集成Redis缓存的基本步骤: 1. **添加依赖**:首先,在`pom.xml`文件添加Spring Data Redis和Spring Boot Actuator的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ``` 2. **配置Redis**:在`application.properties`或`application.yml`配置Redis服务器的信息,如主机名、端口、密码等。 ```properties spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=<your-password> ``` 3. **启用Cache注解**:通过@Configuration注解启用Spring Cache。 ```java @Configuration @EnableCaching public class CacheConfig { //... } ``` 4. **使用Cacheable注解**:在需要缓存的方法上使用@Cacheable注解,设置缓存名称、超时时间和命策略。 ```java @Service public class MyService { @Cacheable(value = "myCache", key = "#id") public MyEntity getDataById(Long id) { //...从数据库或其他数据源获取数据 } } ``` 5. **查询缓存**:如果数据已经在缓存,则直接从缓存返回结果,否则会执行实际的数据访问操作并放入缓存。 6. **缓存管理**:使用Spring Boot Actuator提供的RESTful API(如`/actuator/cache`)可以查看、统计和清理缓存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值