方法一請參考之前博文 spring boot 整合 redis
自己的版本 java8 + redis3.0 + springboot 2.0.0
1 spring boot已經支持集成 redis,在 mvn 中只需添加依賴即可。pom 配置片段如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<!-- 添加 redis 緩存支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1.2 對 redis 進行配置,修改配置文件 application.properties
## Redis 配置 ## Redis數據庫索引(默認為0) spring.redis.database=0 ## Redis服務器地址 spring.redis.host=127.0.0.1 ## Redis服務器連接端口 spring.redis.port=6379 ## Redis服務器連接密碼(默認為空) spring.redis.password=
2.1 創建 RedisConfig 配置類
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory){ StringRedisTemplate redisTemplate = new StringRedisTemplate(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); /** * 通用的序列化和反序列化設置 * ObjectMapper類是Jackson庫的主要類。它提供一些功能將轉換成Java對象匹配JSON結構,反之亦然。 */ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
2.2 創建 RedisService 泛型服務方法
@Service public class RedisService <T> { @Autowired private RedisTemplate redisTemplate; /** * 一天有多少分鍾,默認時間是一天 */ private static final long MINUTES_OF_ONE_DAY = 24 * 60; /** * 將 key,value 存放到redis數據庫中,默認設置過期時間為一天 * * @param key * @param value */ public void set(String key, T value) { set(key, value, MINUTES_OF_ONE_DAY); } /** * 將 key,value 存放到redis數據庫中,設置過期時間單位是分鍾 * * @param key * @param value * @param expireTime 單位是秒 */ public void set(String key, T value, long expireTime) { ValueOperations<String, T> valueOperations = redisTemplate.opsForValue(); valueOperations.set(key,value,expireTime,TimeUnit.MINUTES); } /** * 判斷 key 是否在 redis 數據庫中 * * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 獲取 key 對應的字符串 * @param key * @return */ public T get(String key) { ValueOperations<String, T> valueOperations = redisTemplate.opsForValue(); return valueOperations.get(key); } /** * 獲得 key 對應的鍵值,並更新緩存時間,時間長度為默認值 * @param key * @return */ public T getAndUpdateTime(String key) { T result = get(key); if (result != null) { set(key, result); } return result; } /** * 刪除 key 對應的 value * @param key */ public void delete(String key) { redisTemplate.delete(key); } }
3 接下來就可以使用 RedisService 進行緩存使用了。需要開啟Redis服務,並沒有設置密碼
