SpringBoot缓存之redis--最简单的使用方式
Posted 张八仙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot缓存之redis--最简单的使用方式相关的知识,希望对你有一定的参考价值。
第一步:配置redis
这里使用的是yml类型的配置文件
1 mybatis: 2 mapper-locations: classpath:mapping/*.xml 3 spring: 4 datasource: 5 name: miaosha 6 url: jdbc:mysql://127.0.0.1:3306/miaosha?serverTimezone=UTC 7 username: root 8 password: 1234 9 type: com.alibaba.druid.pool.DruidDataSource #数据源 10 driverClassName: com.mysql.jdbc.Driver 11 redis: 12 host: 10.0.75.1 #地址 13 port: 6379 #端口号 14 timeout: 20000 #连接超时时间 15 cache: #缓存类型 16 type: redis
第二步:在启动类上添加 @EnableCaching 注解
1 @SpringBootApplication(scanBasePackages = {"com.miaoshaproject"}) 2 @MapperScan("com.miaoshaproject.dao") 3 @EnableCaching 4 public class App { 5 6 public static void main( String[] args ) { 7 ConfigurableApplicationContext run = SpringApplication.run(App.class, args); 8 } 9 }
第三步:在需要缓存的方法上添加 @Cacheable 注解
@Service @CacheConfig(cacheNames = {"itemService"}) public class ItemServiceImpl implements ItemService { @Override @Cacheable(value = {"item"},key ="#p0") public String getItemById(Integer id) { String name = "123"; return name; } }
注:关于springboot缓存名的说明:
使用SpringBoot缓存必须配置名字可以使用@CacheConfig(cacheNames = {"itemService"})在类上配置该类公用的名字,也可以使用@Cacheable(value=”item”)在方法上配置只适用于该方法的名字。如果类和方法上都有配置,以方法上的为准。
springBoot会自动拼装缓存名,规则是:配置的名字+两个冒号+方法的实参;
注:关于@CacheConfig和@Cacheable注解的说明:
@Cacheable(value=”item”),这个注释的意思是,当调用这个方法的时候,会从一个名叫 item 的缓存中查询,如果没有,则执行实际的方法(即查询数据库),并将执行的结果存入缓存中,否则返回缓存中的对象。
在上面代码示例中@Cacheable注解设置了两个参数一个是value,一个是key。key的值"#p0"在执行过程中会被getItemById方法的实参所替换,例如id的值3 那么缓存的名字就会是"item::3";如果不设置key,系统会自动也会是这个效果。
如果是无参方法:
@CacheConfig is a class-level annotation that allows to share the cache names,如果你在你的方法写别的名字,那么依然以方法的名字为准。
以上是关于SpringBoot缓存之redis--最简单的使用方式的主要内容,如果未能解决你的问题,请参考以下文章
spring boot 学习(十四)SpringBoot+Redis+SpringSession缓存之实战