`spring:
redis:
host: 192.168.109.132
port: 6379
datasource:
url: jdbc:mysql:///cd2203?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #输出sql
mapper-locations:
- classpath:mapper/*Mapper.xml`
@MapperScan("com.bjpowernode.rediscachespringboot.mapper")//扫描mapper @EnableCaching //启用缓存
@Service @CacheConfig(cacheNames = "com.bjpowernode.service.impl.UserServiceImpl") // 命名隔离
方法上添加注解
@CacheConfig: 一般配置在类上,指定缓存名称,这个名称是和上面“置缓存管理器”中缓存名称的一致。
@Cacheable: 作用于方法上,用于对于方法返回结果进行缓存,如果已经存在该缓存,则直接从缓存中获取,缓存的key可以从入参中指定,缓存的 value 为方法返回值。
@CachePut: 作用于方法上,无论是否存在该缓存,每次都会重新添加缓存,缓存的key可以从入参中指定,缓存的value为方法返回值,常用作于更新。
@CacheEvict: 作用于方法上,用于清除缓存
@Caching: 作用于方法上,用于一次性设置多个缓存。
#作用在你要缓存的数据上
上面注解中的常用配置参数:
value: 缓存管理器中配置的缓存的名称,这里可以理解为一个组的概念,缓存管理器中可以有多套缓存配置,每套都有一个名称,类似于组名,这个可以配置这个值,选择使用哪个缓存的名称,配置后就会应用那个缓存名称对应的配置。
key: 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合。
condition: 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存。
unless: 不缓存的条件,和 condition 一样,也是 SpEL 编写,返回 true 或者 false,为 true 时则不进行缓存。
package com.bjpowernode.rediscachespringboot.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; @Configuration public class RedisConfig { @Bean public RedisCacheConfiguration redisCacheConfiguration(){ RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig(); /* 配置Redis默认的序列化方式 因为使用注解操作redis缓存的时候底层使用的是RedisTemplate 而该对象默认使用的是jdk的序列化方式 可以将该序列化方式改为json方式 */ cacheConfiguration = cacheConfiguration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.json())); return cacheConfiguration; } }