Spring Boot整合Redis
<!-- redis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<!-- spring-boot-starter-data-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--spring2.0集成redis所需common-pool2
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
-->
- 第2步,application.properties
spring.redis.host = 10.40.153.242
spring.redis.port = 6379
spring.redis.jedis.pool.max-active = 1000
spring.redis.jedis.pool.max-idle = 100
spring.redis.jedis.pool.min-idle = 0
spring.redis.jedis.pool.max-wait = 1500ms
spring.redis.timeout = 1500ms
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForHash();
}
@Bean
public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForValue();
}
@Bean
public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForList();
}
@Bean
public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForSet();
}
@Bean
public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForZSet();
}
}
@Component
public class RedisKeyService {
@Autowired
private RedisTemplate<String, String> redisTemplate;
public static final long DEFAULT_EXPIRE = 60 * 60 * 24;
public static final long NOT_EXPIRE = -1;
public boolean existsKey(String key) {
return redisTemplate.hasKey(key);
}
public void renameKey(String oldKey, String newKey) {
redisTemplate.rename(oldKey, newKey);
}
public boolean renameKeyNotExist(String oldKey, String newKey) {
return redisTemplate.renameIfAbsent(oldKey, newKey);
}
public void deleteKey(String key) {
redisTemplate.delete(key);
}
public void deleteKey(String... keys) {
Set<String> kSet = Stream.of(keys).map(k -> k).collect(Collectors.toSet());
redisTemplate.delete(kSet);
}
public void deleteKey(Collection<String> keys) {
Set<String> kSet = keys.stream().map(k -> k).collect(Collectors.toSet());
redisTemplate.delete(kSet);
}
public void expireKey(String key, long time, TimeUnit timeUnit) {
redisTemplate.expire(key, time, timeUnit);
}
public void expireKeyAt(String key, Date date) {
redisTemplate.expireAt(key, date);
}
public long getKeyExpire(String key, TimeUnit timeUnit) {
return redisTemplate.getExpire(key, timeUnit);
}
public void persistKey(String key) {
redisTemplate.persist(key);
}
}
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private RedisKeyService redisKeyService;
@Test
public void testTemplate() throws InterruptedException {
redisTemplate.opsForValue().set("name", "zhangsansan");
String name = (String) redisTemplate.opsForValue().get("name");
System.out.println(name);
User user = new User();
user.setId(1);
user.setName("lisi");
user.setAge(18);
user.setCreateTime(new Date());
redisTemplate.opsForValue().set("user", user);
User u = (User)redisTemplate.opsForValue().get("user");
System.out.println(u);
redisKeyService.expireKey("name", 10, TimeUnit.SECONDS);
Thread.sleep(1500);
System.out.println(redisKeyService.getKeyExpire("name", TimeUnit.SECONDS));
}