spring boot redis配置

來源:互聯網
上載者:User

匯入依賴

<!--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");    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.