匯入依賴
<!--redis--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId></dependency>
redis yml
spring: redis: database: 0 host: 10.0.0.163 port: 6379 timeout: 3000 pool: # 串連池最大串連數(使用負值表示沒有限制) max-active: 8 # 串連池最大阻塞等待時間(使用負值表示沒有限制) max-wait: -1 # 串連池中的最大空閑串連 max-idle: 8 # 串連池中的最小空閑串連 min-idle: 0
@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport { @Value("${redis-timeout}") private Long redisTimeout; //緩衝管理器 @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); //設定緩衝到期時間 cacheManager.setDefaultExpiration(redisTimeout); return cacheManager; } @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory){ StringRedisTemplate template = new StringRedisTemplate(factory); setSerializer(template);//設定序列化工具 template.afterPropertiesSet(); return template; } private void setSerializer(StringRedisTemplate template){ Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); }}
為了方便使用將redis寫成工具包
@Componentpublic class RedisUtil { @Autowired private RedisTemplate redisTemplate; /** * @Description: 大量刪除緩衝 * @Author: hj * @Date: 17:13 2017/10/24 */ public void remove(final String... keys) { for (String key : keys) { remove(key); } } /** * @Description: 大量刪除緩衝(萬用字元) * @Author: hj * @Date: 16:52 2017/10/24 */ public void removePattern(final String pattern) { Set<Serializable> keys = redisTemplate.keys(pattern); if (keys.size() > 0) redisTemplate.delete(keys); } /** * @Description: 刪除緩衝 * @Author: hj * @Date: 16:51 2017/10/24 */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * @Description: 判斷緩衝中是否有對應的value * @Author: hj * @Date: 16:50 2017/10/24 */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * @Description: 讀取緩衝 * @Author: hj * @Date: 16:49 2017/10/24 */ public Object get(final String key) { return redisTemplate.opsForValue().get(key); } /** * @Description: 寫入緩衝 * @Author: hj * @Date: 16:48 2017/10/24 */ public boolean set(final String key, Object value) { boolean result = false; try { redisTemplate.opsForValue().set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * @Description: 寫入緩衝(可以配置到期時間) * @Author: hj * @Date: 16:46 2017/10/24 */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { redisTemplate.opsForValue().set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; }}
Controller就不寫了,測試Service
@Servicepublic class TestService { @Autowired private TestMapper testMapper; @Autowired private RedisUtil redisUtil; public Test test1(Test test) { Test mytest = testMapper.getOneById(test.getId()); redisUtil.set("test",mytest,10L); //10秒到期 return mytest; } public Test test2() { return (Test)redisUtil.get("test"); }}