美文网首页springredis
springboot集成redis

springboot集成redis

作者: 谁在烽烟彼岸 | 来源:发表于2017-11-14 11:12 被阅读87次

    springboot中即成redis

    第一步添加依赖(本项目使用gradle构建)

    compile('org.springframework.boot:spring-boot-starter-data-redis')

    第二步配置必要的参数(application.yml)

    spring:

        redis:

            database:0                       //数据库名字

             host:123.56.76.154        //ip地址

              pool:                               //链接池

                    max-active:8。        //最大链接数

                    max-idle:8               //连接池中的最大空闲连接

                     max-wait:-1             //连接池最大阻塞等待时间(使用负值表示没有限制)

                      min-idle:0                 //连接池中的最小空闲连接

               timeout:10000000           //失效时间

               port:6379                          //服务器端口

                password:                       // Redis服务器连接密码(默认为空)

    此时已经可以在springboot 中使用RedisTemplate

    @Override

    public void saveUser(User user) {

             logger.info("redis 添加 :" + user);

               redisTemplate.opsForValue().set(user.getId(), user);

    }

    @Override

    public User selectUser(String id) {

            logger.info("redis 查找 :" + id);

            User user = (User) redisTemplate.opsForValue().get(id);

             logger.info("redis 查找 :" + user);

             return user;

    }

    @Override

    public void deleteUser(String id) {

              logger.info("redis 删除 :" + id);

               redisTemplate.delete(id);

    }

    RedisTemplate类进行创建 key-value记录时,redis存储的是乱码形式,但是并不影响 读取值,只是数据库记录的可读性几乎为零了

    如下:

    key:\xAC\xED\x00\x05t\x00\x0Cdfadsfasf464

    第三步需要给redis编写配置类,主要有三个方面

    1.key生成策略

    2.缓存管理器

    3.反编译方法

    本项目缓存配置文件如下

    @Configuration

    @EnableCaching//启用缓存

    public class RedisConfig extends CachingConfigurerSupport {

          @Bean

             public KeyGenerator keyGenerator() {

                       return new KeyGenerator() {

                               @Override

                                public Object generate(Object target, Method method, Object... params){

                                         StringBuilder sb = new StringBuilder();

                                        sb.append(target.getClass().getName());

                                         sb.append(method.getName());

                                         for (Object obj : params) {

                                              sb.append(obj.toString());

                                          }

                                           return sb.toString();

                                      } };

                   }

              /** * 缓存管理器.

               * @param redisTemplate

                * @return */

               @Bean

              public CacheManager cacheManager(RedisTemplate redisTemplate) {

                      CacheManager cacheManager = new RedisCacheManager(redisTemplate);

                       return cacheManager;

                  }

                  /** * redis模板操作类,类似于jdbcTemplate的一个类;

                * 虽然CacheManager也能获取到Cache对象,但是操作起来没有那么灵活;

                 * 这里在扩展下:RedisTemplate这个类不见得很好操作,我们可以在进行扩展一个我们

                   * 自己的缓存类,比如:RedisStorage类;

                   * @param factory : 通过Spring进行注入,参数在application.properties进行配置;

                   * @return */

                    @Bean

                    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {

                            StringRedisTemplate template = new StringRedisTemplate(factory);   //RedisTemplate的子类

                           //反编译具体实现(jackson)

                             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;

                     }

    }

    相关文章

      网友评论

        本文标题:springboot集成redis

        本文链接:https://www.haomeiwen.com/subject/ljsxvxtx.html