RedisTemplate
是 Spring Framework 中用于与 Redis 数据库进行交互的核心类之一。它提供了一种方便的方式来执行各种 Redis 操作,包括数据存储、读取、更新和删除等。和 Jedis、Lettuce类似,它们都是与 Redis 数据库进行交互的 Java 客户端库。
自定义RedisTemplate
SpringBoot默认提供的是 RedisTemplate<Object,Object>
,可以在 RedisAutoConfiguration
中查看详情,不适合日常使用。因此我们需要自定义一个 RedisTemplate 并注入到容器中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| @Configuration public class RedisConfig {
@Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(connectionFactory);
Jackson2JsonRedisSerializer<Object> jacksonSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); jacksonSerializer.setObjectMapper(objectMapper);
template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(jacksonSerializer); return template; }
}
|
创建工具类 RedisUtil
有了 RedisTemplate
后就可以简单的操作Redis数据库了。为了方便,我们可以创建一个工具类,封装一些简单的操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class RedisUtil { @Autowired private RedisTemplate<String, Object> redisTemplate;
public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); }
public Object get(String key) { return redisTemplate.opsForValue().get(key); }
public boolean expire(String key, long timeout) { return redisTemplate.expire(key, timeout, TimeUnit.SECONDS); }
public boolean delete(String key) { return redisTemplate.delete(key); }
}
|