zoukankan      html  css  js  c++  java
  • springboot整合redis集群

    springboot整合redis集群

    yls
    2019-9-21


    简介

    在springboot使用搭建好的redis集群

    添加redis和连接池依赖

       <!--redis连接池 start-->
           <dependency>
               <groupId>org.apache.commons</groupId>
               <artifactId>commons-pool2</artifactId>
           </dependency>
           <!--redis连接池 end-->
    
           <!--redis start-->
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-data-redis</artifactId>
               <version>2.2.6.RELEASE</version>
           </dependency>
           <!--redis end-->
    

    在配置文件中配置连接池和sentinel

    ip: 39.97.234.52
    spring:
      redis:
        lettuce:
          pool:
            max-active: 10
            max-idle: 8
            max-wait: -1ms
            min-idle: 0
        sentinel:
          master: mymaster
          nodes: ${ip}:26379,${ip}:26380,${ip}:26381
        password: test@dbuser2018
    

    添加redis配置类,修改springboot默认的redis序列化方式

    @Configuration
    public class RedisConfig {
        /**
         * 把任何数据保存到redis时,都需要进行序列化,默认使用JdkSerializationRedisSerializer进行序列化。
         * 默认的序列化会给所有的key,value的原始字符前,都加了一串字符(例如:xACxEDx00),不具备可读性
         * 所以需要配置jackson序列化方式
         */
        @Bean
        public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory factory){
            RedisTemplate<String,Object> template=new RedisTemplate<>();
            template.setConnectionFactory(factory);
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
            StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
            //key采用String的序列化方式
            template.setKeySerializer(stringRedisSerializer);
            //value采用jackson序列化方式
            template.setValueSerializer(jackson2JsonRedisSerializer);
            //hash的key采用String的序列化方式
            template.setHashKeySerializer(stringRedisSerializer);
            //hash的value采用String的序列化方式
            template.setHashValueSerializer(jackson2JsonRedisSerializer);
            template.afterPropertiesSet();
            return template;
        }
    }
    

    创建redis服务

        @Service
        public class RedisServiceImpl implements RedisService {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        @Override
        public boolean put(String key, Object value, long seconds) throws JsonProcessingException {
            redisTemplate.opsForValue().set(key, value, seconds, TimeUnit.SECONDS);
            return true;
        }
    
        @Override
        public <T> T get(String key, Class<T> clazz) throws IOException {
            Object o = redisTemplate.opsForValue().get(key);
            if (o != null) {
                String json = String.valueOf(o);
                T t = JsonUtil.stringToObject(json, clazz);
                return t;
            }
            return null;
        }
        }
    

    创建redisController测试redis服务

        @RestController
        public class RedisController {
    
            @Autowired
            private RedisService redisService;
    
            @PostMapping(value = "put")
            public String put(String key,String value,long seconds){
    
                redisService.put(key,value,seconds);
                return "ok";
            }
    
            @GetMapping(value = "get")
            public Object get(String key){
    
                Object o=redisService.get(key);
                if(o!=null){
                    return String.valueOf(o);
                }
                return "not_ok";
            }
        }
    
  • 相关阅读:
    win2K/win2003终端服务器超出最大允许连接数解决之道
    DOM与SAX读取xml文件例程
    ubuntu安装配置telnet
    SCTP 简介
    groovy 脚本中文乱码问题解决
    编码问题研究
    gvim支持utf8
    ctags使用方法
    我家猫病了。。
    小朋友搞笑造句
  • 原文地址:https://www.cnblogs.com/yloved/p/11561210.html
Copyright © 2011-2022 走看看