Asuka直接使用spring-boot-redis作为缓存依赖,通过其封装好的RedisTemplate和StringRedisTemplate对Redis缓存进行管理,不再单独封装一套RedisUtil,因为RedisTemplate已经足够具备易用性,对于了解Redis的原生方法亦有所帮助。
依赖与配置
pom.xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
application-dev.yml
spring:redis:# Redis 服务器iphost: 192.168.31.178# Redis 端口port: 6379# Redis 数据库索引(默认为 0)database: 0# Redis 服务器连接密码(默认为空)password:
RedisConfig ```java @Configuration public class RedisConfig {
@Bean public RedisTemplate
redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);RedisSerializer<?> redisSerializer = new StringRedisSerializer();ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(lettuceConnectionFactory);template.setKeySerializer(redisSerializer);template.setValueSerializer(jackson2JsonRedisSerializer);template.setHashKeySerializer(redisSerializer);template.setHashValueSerializer(jackson2JsonRedisSerializer);template.afterPropertiesSet();return template;
}
}
<a name="HZye8"></a>## RedisTemplate方法简介<br />RedisTemplate对Redis的5种数据结构进行了高度封装,统一返回operation接口,如下所示:- 操作字符串:`redisTemplate.opsForValue()`- 操作 Hash:`redisTemplate.opsForHash()`- 操作 List:`redisTemplate.opsForList()`- 操作 Set:`redisTemplate.opsForSet()`- 操作 ZSet:`redisTemplate.opsForZSet()`对于String类型的数据,又提供了StringRedisTemplate,两者的区别主要在于:1. RedisTemplate是一个泛型类,可以操作任何类型,而StringRedisTemplate的键和值都必须是String类型1. 两者数据不共通,无法获取对方管理的缓存数据<a name="8qtRC"></a>## 实战演示在需要使用缓存的service、component或controller中注入RedisTemplate,然后调用redisTemplate的各种ops方法,如下所示:```java@Autowiredprivate RedisTemplate<String, Object> redisTemplate;
redisTemplate.opsForList().leftPush("cache:demo", loginRecord);
更新计划
- 支持Memcache、GuavaCache等多种缓存
- 提供slf4j类似的缓存切面,根据依赖和配置自动选择缓存
