【浅学Redis】Spring Cache的基础使用

1. Spring Cache是什么

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

Spring Cache 提供了一层抽象,底层可以切换为不同cache来实现。实际就是通过CacheManager接口来统一不同缓存技术。

针对不同的缓存技术需要实现不同的CacheManager:
在这里插入图片描述

2. Spring Cache 常用注释

在这里插入图片描述
在SpringBoot中,加上上面的注解,就可以实现缓存,具体的实现见下面

使用实例:

@CachePut(value = "userCache",key = "#user.id")//user:获取方法的参数
@CacheEvict(value = "userCache",key = "#id")
@Cacheable(value = "userCache",key="#id",condition = "#result != null")
@CacheEvict(value = "setmealCache",allEntries = true)//allEntries 表示清除setmealCache分类下面的所有缓存数据

注释中参数的含义:

  1. value:缓存的名称,每个名称下面有多个key
  2. key:缓存的内容,通常需要动态的生成,即利用 ‘#’ 来实现
  3. condition:缓存条件,满足条件时才会进行缓存
  4. allEntries:表示清除setmealCache分类下面的所有缓存数据

3. Spring Cache 的使用步骤

1.引入相关的依赖(引入starter-web即可将缓存存储在内存中)

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     <scope>compile</scope>
 </dependency>

2.在项目启动类上加上@EnableCaching注释

在这里插入图片描述
3.注入CacheManager

在这里插入图片描述
4. 给需要缓存的方法加上注释
在这里插入图片描述

注意:如果方法的返回值为一个List,那么对应的类要实现序列化接口
在这里插入图片描述
在这里插入图片描述

通过以上的操作,可以使缓存暂时存在内存中,当项目关闭时,缓存就会删除。这是不可取的,所以需要将缓存存在redis中来克服这个问题,如下:

4. 使用Spring Cache操作Redis

处理完成上面的步骤,还得进行如下3个操作:

1.引入reids和cache的依赖

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

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

2.配置好redis

在这里插入图片描述

3.配置好cache

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在静态方法中使用JdbcTemplate需要注意以下几点: 1. 静态方法中无法直接使用Spring容器中的Bean,因为静态方法是类级别的,而Bean是实例级别的。因此需要手动获取JdbcTemplate实例,可以通过ApplicationContext获取JdbcTemplate实例,或者通过静态变量保存JdbcTemplate实例。 2. 在使用JdbcTemplate时,需要先创建一个JdbcTemplate实例,并设置数据源。数据源可以通过Spring容器注入,或者手动创建。在静态方法中,可以通过静态变量保存JdbcTemplate实例,避免重复创建。 3. 在使用JdbcTemplate操作数据库时,需要注意线程安全问题。JdbcTemplate是线程安全的,但是需要保证JdbcTemplate实例的线程安全,即在多线程环境中需要保证同一JdbcTemplate实例不会被并发访问。 下面是一个示例代码: ``` public class JdbcUtils { private static JdbcTemplate jdbcTemplate; public static void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } public static void executeSql(String sql) { jdbcTemplate.execute(sql); } } ``` 在上面的代码中,我们通过静态变量保存了JdbcTemplate实例,并提供了一个静态方法setDataSource用于设置数据源。在使用JdbcTemplate时,我们可以直接调用静态方法executeSql执行SQL语句。需要注意的是,这里的executeSql方法是线程安全的,因为JdbcTemplate实例是共享的,并且JdbcTemplate本身是线程安全的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值