redisTemplate.setenx
时间: 2024-02-05 16:47:03 浏览: 39
redisTemplate.setex() 方法用于设置一个带有过期时间的键值对到 Redis 数据库中。它接受三个参数:键、过期时间(以秒为单位)、值。例如,你可以使用以下代码来设置一个键为 "name",值为 "John",并且过期时间为 60 秒的键值对:
```java
redisTemplate.opsForValue().set("name", "John", 60, TimeUnit.SECONDS);
```
这样,在设置的过期时间到达后,该键值对将会自动从 Redis 数据库中删除。
相关问题
public class RedisCustomConfiguration { @Bean(name = "redisTemplate") public RedisTemplate<String,Object> initRedisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String,Object> redisTemplate=new RedisTemplate<String,Object>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(RedisSerializer.string()); redisTemplate.setValueSerializer(RedisSerializer.java()); redisTemplate.setHashKeySerializer(RedisSerializer.string()); redisTemplate.setHashValueSerializer(RedisSerializer.java()); return redisTemplate; } }解释一下
这段代码是一个 Redis 客户端的配置类,主要实现了 RedisTemplate 的初始化配置。在 Spring Boot 应用中,我们可以使用 RedisTemplate 来操作 Redis 数据库。这个类中的 initRedisTemplate 方法使用了 Spring 框架的注解 @Bean,将一个名为 "redisTemplate" 的 RedisTemplate 实例注入到 Spring 容器中。
在 RedisTemplate 的配置中,我们设置了连接工厂 RedisConnectionFactory,并将其注入到 RedisTemplate 中。接着我们使用 RedisSerializer 来序列化 RedisTemplate 的键和值,这里使用的是 string() 和 java() 方法。这些配置可以帮助我们更方便地操作 Redis 数据库。
@Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { // 配置redisTemplate RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 设置序列化 Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); jackson2JsonRedisSerializer.setObjectMapper(om); // key序列化 redisTemplate.setKeySerializer(new StringRedisSerializer()); // value序列化 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // Hash key序列化 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // Hash value序列化 redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; }
这段代码是用来配置RedisTemplate的,可以看出该RedisTemplate的key和hashKey序列化采用了StringRedisSerializer,而value和hashValue序列化采用了Jackson2JsonRedisSerializer。其中,Jackson2JsonRedisSerializer使用了ObjectMapper来实现Java对象和JSON字符串之间的相互转换。在配置ObjectMapper时,设置了默认可见性为所有属性可见,以及默认的对象类型为非final类型,并且将类型信息作为属性写入JSON字符串中。这些配置可以使得Redis中存储的数据更加直观、易读,并且可以支持更多类型的Java对象。返回的RedisTemplate可以用来进行Redis操作,比如存储、查询等。
阅读全文