zoukankan      html  css  js  c++  java
  • SpringBoot(三)——整合redis

    springboot2.3.2+redis5.0.9

    1.依赖包

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.47</version>
            </dependency>

    2.配置application.yml

    spring:
      redis:
        #指定数据库,默认为0,在黑窗口里通过 select idx切换
        database: 0
        port: 6379
        host: 127.0.0.1
        #redis密码,默认为空,这里没有设置所以注释掉了
        #password: root
        pool:
          max-active: 8
            # 连接池最大阻塞等待时间(使用负值表示没有限制)
          max-wait: -1
            # 连接池中的最大空闲连接
          max-idle: 8
            # 连接池中的最小空闲连接
          min-idle: 0

    3.配置RedisTemplate

    import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
    
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    @Configuration
    public class RedisConfig {
        @Bean
        @ConditionalOnMissingBean(name = "redisTemplate")
        public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            RedisTemplate<Object, Object> template = new RedisTemplate<>();
            //使用fastjson序列化
            FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
            // value值的序列化采用fastJsonRedisSerializer
            template.setValueSerializer(fastJsonRedisSerializer);
            template.setHashValueSerializer(fastJsonRedisSerializer);
            // key的序列化采用StringRedisSerializer
            template.setKeySerializer(new StringRedisSerializer());
            template.setHashKeySerializer(new StringRedisSerializer());
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    
        @Bean
        @ConditionalOnMissingBean(StringRedisTemplate.class)
        public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
            StringRedisTemplate template = new StringRedisTemplate();
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    }

    这个当作是一个模板套用,如果不使用那些序列化,会使得【对Java的redisTemplate设置key,但是在redis中的key有一些乱七八糟的编码】,例如在Java中设置name,在redis中却这样显示。

    RedisTemplate和StringRedisTemplate有一些区别,一般RedisTemplate就够用了

    4.测试

    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    
    import javax.annotation.Resource;
    
    @SpringBootTest
    class DemoApplicationTests {
    
        @Resource
        RedisTemplate redisTemplate;
        @Resource
        StringRedisTemplate stringRedisTemplate;
    
        @Test
        void testRedis() {
            redisTemplate.opsForValue().set("person","shoulinniao");
            redisTemplate.opsForValue().set("id",10086);
            System.out.println(redisTemplate.opsForValue().get("person"));
            System.out.println(redisTemplate.opsForValue().get("id"));
            System.out.println(stringRedisTemplate.opsForValue().get("person"));
            System.out.println(stringRedisTemplate.opsForValue().get("id"));
        }
    }
    /*输出
    shoulinniao
    10086
    "shoulinniao"
    10086
    */

    在redis黑窗口也同步更新

  • 相关阅读:
    易错小细节
    Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_GiftAnimationView"
    iOS 获取UIView 动画的实时位置的方法
    控制器跳转后看不到导航栏
    定时器显示礼物弹出的动画,不错的思路
    error===>ld: 2 duplicate symbols for architecture x86_64
    AppStore上传条例
    right here waiting的歌词
    Take my breath away
    Sailing
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/13433039.html
Copyright © 2011-2022 走看看