Redis数据库缓存数据

缓存课程表

不用Redis数据库

用户端数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力也会增大,系统响应慢、用户体验差

用户-----》前端页面------》后端服务------》数据库

使用Redis可以把数据缓存到内存中,减少数据库查询操作。

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

用户-----》前端页面------》后端服务 ------》判断是否存在缓存?存在------》读取缓存返回前端

不存在------>查询数据库----》载入缓存

具体实现

1.开启服务

2.导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

3.在properties文件中配置属性

# 自定义属性配置
#REDIS
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword
spring.redis.database=9

4.代码实现

①@EnableCaching 开启缓存注解功能,加在启动类上

②@Cacheable 在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中

在课程表控制类的返回课程表信息的方法上加上@Cacheable注解,返回课程表信息时,往缓存存课程表信息

    @PostMapping("/scheduleList.do")
    @ResponseBody
    @Cacheable(value = "courseCache" ,key="1")// courseCache::1
    // value:缓存的名称,每个缓存名称下面可以有多个key
    // key:缓存的key
    public List<CourseScheduleVo> scheduleList() 
        //代码部分省略。。。
        }
        return courseScheduleVoList;
    }

当第一次查看课程表,会从数据库中进行查询,同时将查询的结果存储到Redis中,在后续访问直接从Redis缓存中查询,不再查询数据库。

可以看到Redis数据库中已经有缓存的数据

点击查看其他月份IDEA控制台也没有出现sql语句,说明是从Redis中查询的数据。

清空缓存:

@GetMapping("/refreshCache.do")
@ResponseBody
@CacheEvict(cacheNames ="courseCache",key = "1")
public R refreshCache(){
	return R.ok();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值