美文网首页
SpringBoot整合Redis

SpringBoot整合Redis

作者: 橡_皮泥 | 来源:发表于2019-01-04 12:28 被阅读0次

    SpringBoot对很多NoSQL数据库提供了自动化支持,包括Redis、MongoDB、Elasticsearch、Solr等

    'SpringBoot'、'Redis'

    引入依赖

    <!-- 版本号2.1.1.RELEASE --> 
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    
    注:spring-boot-starter-data-redis的配置变更

    在springboot1.4.x版本更新日志中有这么一段说明:

    Renamed starters
    The following starters have been renamed, the old ones will be removed in Spring Boot 1.5
    spring-boot-starter-redis → spring-boot-starter-data-redis
    ...
    

    即spring-boot-starter-redis从1.4.0版本开始更名为spring-boot-starter-data-redis,在1.4.7之后完全移除掉spring-boot-starter-redis。

    • 当springboot版本号小于1.4.0时,只能添加spring-boot-starter-redis的jar包;
    • 版本号在1.4.0到1.4.7之间时,添加spring-boot-starter-redis和spring-boot-starter-data-redis皆可,两者的包没有区别;
    • 从1.5.0版本开始,只能添加spring-boot-starter-data-redis包。

    配置

    SpringBoot从1.x到2.x,对redis的配置有一些变更。

    旧版配置
    spring.redis.database=0
    spring.redis.host=192.168.99.100
    spring.redis.port=6379
    #spring.redis.password= # Login password of the redis server.
    spring.redis.pool.max-active=8
    spring.redis.pool.max-idle=8
    spring.redis.pool.max-wait=-1
    spring.redis.pool.min-idle=0
    #spring.redis.sentinel.master= # Name of Redis server.
    #spring.redis.sentinel.nodes= # Comma-separated list of host:port pairs.
    spring.redis.timeout=10
    
    新版配置

    如果使用jedis,将lettuce改为jedis,并引入jedis依赖即可

    # Redis数据库索引(默认为0)
    spring.redis.database=0
    # Redis服务器地址
    spring.redis.host=192.168.99.100
    # Redis服务器连接端口
    spring.redis.port=6379
    #spring.redis.password= # Login password of the redis server.
    # 连接池最大连接数(使用负值表示没有限制)
    spring.redis.lettuce.pool.max-active=8
    # 连接池中的最大空闲连接
    spring.redis.lettuce.pool.max-idle=8
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.lettuce.pool.max-wait=-1ms
    # 连接池中的最小空闲连接
    spring.redis.lettuce.pool.min-idle=0
    #spring.redis.sentinel.master= # Name of Redis server.
    #spring.redis.sentinel.nodes= # Comma-separated list of host:port pairs.
    # 连接超时时间(毫秒)
    spring.redis.timeout=100ms
    

    测试访问

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class BootDemoApplicationTests {
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
    
        @Test
        public void contextLoads() {
            //保存字符串
            stringRedisTemplate.opsForValue().set("key", "1234");
            Assert.assertEquals("1234", stringRedisTemplate.opsForValue().get("key"));
        }
    }
    //在早期版本中,在1.4版本之后@SpringBootTest注解替换了@SpringApplicationConfiguration注解。
    

    在SpringBoot1.x版本中,spring-boot-starter-data-redis使用的是Jedis。SpringBoot2.x版本,默认使用的是Lettuce,也提供了对Jedis的支持。

    Jedis和Lettuce

    两个框架的定位都是Redis的客户端。Jedis的API提供了比较全面的Redis命令的支持,相比Lettuce更加原生。在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接; Lettuce用于线程安全同步,异步和响应使用,支持集群,管道和编码器。基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作,当然也可以按需增加连接实例。

    相关文章

      网友评论

          本文标题:SpringBoot整合Redis

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