Spring boot 2.x 中使用redis
Posted baizhuang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot 2.x 中使用redis相关的知识,希望对你有一定的参考价值。
一、添加Maven 依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.1.3.RELEASE</version> </dependency>
二.application.yml 中配置 redis 相关配置
spring: datasource: url: jdbc:mysql://localhost:3306/order?serverTimezone=GMT%2B8&characterEncoding=UTF-8 username: root password: xxxxxx redis: host: ip database: 0 port: 6379 password:
jdbc4.0 是不用显式的去加载驱动,如果驱动包符合 SPI 模式就会自动加载
就是说程序会自动去项目中查找是否有驱动,当然没有驱动的话自然是连接不了的
三、写一个 redis 配置类
redis 默认的是使用JDK 的序列化方式。
JdkSerializationRedisSerializer
当保存实体后,Redis 中的实体信息乱码,需要修改redis 默认的序列化方式,创建RedisConfig 配置文件
@Configuration public class RedisConfig //设置过期时间 public static Duration liveTime = Duration.ofDays(1); @Bean public RedisCacheManager redisCacheManager(RedisConnectionFactory connectionFactory) RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(liveTime) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())) .disableCachingNullValues(); RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory) .cacheDefaults(cacheConfiguration).transactionAware().build(); return redisCacheManager; @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException RedisTemplate<String, Object> template = new RedisTemplate(); template.setConnectionFactory(redisConnectionFactory); //细化序列化 template.setKeySerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); //修改默认序列化器 /* Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); template.setDefaultSerializer(serializer);*/ return template;
四、使用注解的方式使用Redis
@Service public class EmpService @Autowired private EmpMapper empMapper; @Cacheable(cacheNames = "emp") public Emp getEnp(int id) return empMapper.getEmpById(id); @CachePut public int insertEmp(Emp emp) return empMapper.insertEmp(emp); @CacheEvict(beforeInvocation = false,value = "emp") public int delEmp(int id) empMapper.delEmp(id); return 1; @CachePut(key = "#p0.id",value = "emp") public Emp updateEmp(Emp emp) empMapper.updateEmp(emp); return emp;
以上是关于Spring boot 2.x 中使用redis的主要内容,如果未能解决你的问题,请参考以下文章
如何使用spring boot 2.x为redis集群设置密码
spring boot 集成 redis lettuce(jedis)
Spring Boot 2.x基础教程:使用Redis的发布订阅功能