zoukankan      html  css  js  c++  java
  • Spring Boot 11 : Redis

    pom.xml

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>

    使用 RedisTemplate

    /**
     * Redis 配置
     *
     * @Author YangXuyue
     * @Date 2018/08/02 21:57
     */
    @Configuration
    @EnableCaching
    @AutoConfigureAfter(RedisAutoConfiguration.class)
    public class RedisConfig extends CachingConfigurerSupport {
    
        /**
         * 设置RedisCacheManager。在配置 CacheManager 的方法中,也可以配置缓存默认的过期时间。
         *
         * @param redisTemplate
         * @return
         * @Author YangXuyue
         * @Date 2018/08/09 07:48
         */
        @Bean
        public CacheManager cacheManager(RedisTemplate redisTemplate) {
            RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
            // 设置缓存过期时间,单位秒
            Map<String, Long> expiresMap = new HashMap<>();
            expiresMap.put(CacheNames.MASTER, 600L);
            expiresMap.put(CacheNames.SECOND, 600L);
            // 设置超时
            cacheManager.setExpires(expiresMap);
    
            // TODO 没有设置的缓存默认过期时间
            //cacheManager.setDefaultExpiration(60 * 60L);
    
            return cacheManager;
        }
    
        /**
         * 使用 StringRedisTemplate
         *
         * @param factory
         * @return
         * @Author YangXuyue
         * @Date 2018/08/09 07:48
         */
        @Bean
        public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
            StringRedisTemplate template = new StringRedisTemplate(factory);
            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);
    
            template.afterPropertiesSet();
    
            return template;
        }
    
        /**
         * Redis 设置一些全局配置,比如配置主键的生产策略 KeyGenerator,如不配置会默认使用参数名作为主键。
         *
         * @return
         * @Author YangXuyue
         * @Date 2018/08/09 07:48
         */
        @Override
        @Bean
        public KeyGenerator keyGenerator() {
            return new BaseKeyGenerator();
        }
    
        /**
         * Redis主键生成策略
         *
         * @Author YangXuyue
         * @Date 2018/08/09 07:48
         */
        private class BaseKeyGenerator implements KeyGenerator {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                // 目标Object的名称+方法名+Params各个元素名称
                StringBuilder sb = new StringBuilder();
                sb.append(target.getClass().getSimpleName());
                sb.append(".").append(method.getName());
                for (Object obj : params) {
                    if (null != obj) {
                        sb.append(obj.toString());
                    }
                }
                return sb.toString();
            }
        }
    
    }
  • 相关阅读:
    hdu 4651 Partition (利用五边形定理求解切割数)
    单点登录SSO的实现原理
    高速排序算法
    2014 百度之星第三题
    TR069协议向导——一个帮助你了解TR069协议的简明教程(一)
    教你用笔记本破解无线路由器password
    人脸识别算法初次了解
    JSP验证码
    GROUP BY,WHERE,HAVING之间的差别和使用方法
    typedef函数指针使用方法
  • 原文地址:https://www.cnblogs.com/yang21/p/10674698.html
Copyright © 2011-2022 走看看