在Spring Boot中集成Redis
- 依赖
- 在application.yml中配置Redis服务地址
- 创建Redis配置类
- 缓存工具类
- 使用
依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
在application.yml中配置Redis服务地址
spring:profiles:active: druidserver: 8080redis:host: 127.0.0.1port: 6379password:database: 0timeout: 1800000
创建Redis配置类
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport
{@Bean@SuppressWarnings(value = { "unchecked", "rawtypes" })public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(serializer);template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(serializer);template.afterPropertiesSet();return template;}}
缓存工具类
@SuppressWarnings(value = { "unchecked", "rawtypes" })
@Component
public class RedisCache {@Autowiredpublic RedisTemplate redisTemplate;public <T> void setCacheObject(final String key, final T value) {redisTemplate.opsForValue().set(key, value);}public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {redisTemplate.opsForValue().set(key, value, timeout, timeUnit);}public boolean expire(final String key, final long timeout) {return expire(key, timeout, TimeUnit.SECONDS);}public boolean expire(final String key, final long timeout, final TimeUnit unit) {return redisTemplate.expire(key, timeout, unit);}public long getExpire(final String key) {return redisTemplate.getExpire(key);}public Boolean hasKey(String key) {return redisTemplate.hasKey(key);}public <T> T getCacheObject(final String key) {ValueOperations<String, T> operation = redisTemplate.opsForValue();return operation.get(key);}public boolean deleteObject(final String key) {return redisTemplate.delete(key);}public boolean deleteObject(final Collection collection) {return redisTemplate.delete(collection) > 0;}
}
使用