zoukankan      html  css  js  c++  java
  • Springboot集成Redis举例

    依赖包

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

    配置文件(application.properties)

    # Redis数据库索引(默认为0)
    spring.redis.database=0
    # Redis服务器地址
    spring.redis.host=x.x.x.x
    # Redis服务器连接端口
    spring.redis.port=6738
    # Redis服务器连接密码(默认为空)
    spring.redis.password=
    # 连接超时时间(毫秒)
    spring.redis.timeout=10000
    # 连接池最大连接数(使用负值表示没有限制)
    spring.redis.jedis.pool.max-active=8
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.jedis.pool.max-wait=-1ms
    # 连接池中的最大空闲连接
    spring.redis.jedis.pool.max-idle=8
    # 连接池中的最小空闲连接
    spring.redis.jedis.pool.min-idle=0

    配置文件(RedisConfig.java)

    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.JsonTypeInfo;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.RedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    import java.text.SimpleDateFormat;
    
    /**
     * @author :gongxr
     * @description: 自定义RedisTemplate
     * @date :Created in 2021/6/30
     */
    @Configuration
    public class RedisConfig {
        @Bean
        public RedisTemplate<Object, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) {
            RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            // 修改key的默认序列化器为 string
            RedisSerializer<String> stringRedisSerializer = new StringRedisSerializer();
            redisTemplate.setDefaultSerializer(stringRedisSerializer);
    
            // 自定义 对象转换
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    //        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            objectMapper.activateDefaultTyping(
                    LaissezFaireSubTypeValidator.instance,
                    ObjectMapper.DefaultTyping.NON_FINAL,
                    JsonTypeInfo.As.WRAPPER_ARRAY);
            Jackson2JsonRedisSerializer<Object> valueSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
            valueSerializer.setObjectMapper(objectMapper);
            redisTemplate.afterPropertiesSet();
            return redisTemplate;
        }
    
    }

    测试代码

    import com.gxr.dmsData.common.BaseTest;
    import lombok.extern.slf4j.Slf4j;
    import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.RedisTemplate;
    
    import java.util.Set;
    
    /**
     * @author :gongxr
     * @description:
     * @date :Created in 2021/6/30
     */
    @Slf4j
    public class TestRedis extends BaseTest {
        @Autowired
        private RedisTemplate redisTemplate;
    
        /**
         * RedisTemplate中定义了对5种数据结构操作
         * redisTemplate.opsForValue();//操作字符串
         * redisTemplate.opsForHash();//操作hash
         * redisTemplate.opsForList();//操作list
         * redisTemplate.opsForSet();//操作set
         * redisTemplate.opsForZSet();//操作有序set
         */
        @Test
        public void testRedisGet() {
            String key = "adviceCalculateTime";
            Boolean b = redisTemplate.hasKey(key);
            log.info("key是否存在:{}", b);
            Object o = redisTemplate.boundValueOps(key).get();
            log.info(redisTemplate.toString());
            log.info("查询结果:{}", o);
        }
    
        /**
         * map类型
         */
        @Test
        public void testRedisHash() {
            String key = "RRS_CURRENCY_CACHE";
            Object o = redisTemplate.boundHashOps(key).get("590");
            log.info("查询结果:{}", o.toString());
        }
    
        /**
         * set类型
         */
        @Test
        public void testRedisSet() {
            String key = "goodsDataSyncSkc:set";
            Set set = redisTemplate.boundSetOps(key).members();
            log.info("查询结果:{}", set.size());
            String s = (String) redisTemplate.boundSetOps(key).randomMember();
            log.info("查询结果:{}", s);
        }
    
    }
  • 相关阅读:
    机器学习(04)——常用专业术语
    C# 线程同步的三类情景
    线程同步的情景之三
    线程同步的情景之二
    线程同步的情景之一
    Thread.Sleep(0) vs Sleep(1) vs Yeild
    Visual Studio 实用扩展推荐
    为革命保护视力 --- 给 Visual Studio 换颜色
    免费的精品: Productivity Power Tools 动画演示
    如何扩展 Visual Studio 编辑器
  • 原文地址:https://www.cnblogs.com/gongxr/p/14956148.html
Copyright © 2011-2022 走看看