当前位置:首页 > 问答 > 正文

用YML配置文件快速搞定Redis客户端搭建和连接那些事儿

(引用来源:CSDN博客《Spring Boot整合Redis超详细教程》)

咱们得明白YML文件是干啥的,它就像一个超级简单的设置说明书,告诉你的程序该怎么去连接Redis,你不用写一大堆复杂的代码,只需要在这个文件里用类似写购物清单的方式,把关键信息列出来就行了,这事儿主要发生在Spring Boot项目里,因为它特别流行用YML来做配置。

连接Redis需要哪些基本信息呢?其实就跟你要去朋友家做客一样,需要知道地址、端口号、密码(如果朋友家锁了门),以及一些基本的礼节(比如用哪种方式进门),对应到Redis上,就是这几样东西:

  1. 主机地址(host):Redis服务器在哪?如果在你自己的电脑上,那就是localhost或者127.0.0.1,如果在另一台服务器,就要写它的IP地址或者域名。
  2. 端口号(port):Redis默认开在6379这个端口上,就像朋友家的大门是6379号,一般没改过的话就用这个。
  3. 密码(password):如果你的Redis设置了密码,那必须提供,不然会被拒之门外,没密码就不用写。
  4. 数据库索引(database):Redis里面有16个数据库,从0到15,默认用的是0号库,如果你的应用数据都放在0号库,那这个也可以不写。
  5. 连接池(lettuce.pool或jedis.pool):这个稍微高级一点点,你可以理解为“连接管家”,如果有很多人(很多个请求)同时要连接Redis,这个管家会管理一些预先建立好的连接,谁要用就分配一个,用完了收回,避免频繁地开门关门,提高效率。

我们把这些信息翻译成YML文件里的语言,YML的格式很讲究缩进,用空格来区分层级关系,千万别用Tab键。

(引用来源:Spring官方文档关于Common Application Properties的说明)

一个最基础、最简单的配置长这样:

spring:
  redis:
    host: localhost
    port: 6379

看,是不是很简单?spring下面有个redisredis下面列出了hostport,这就完成了最基本的配置,你的Spring Boot应用启动时,会自动读取这个配置,然后就能成功连接到本机的Redis了。

如果你的Redis有密码,比如密码是“mypassword123”,那就在上面基础上加一行:

用YML配置文件快速搞定Redis客户端搭建和连接那些事儿

spring:
  redis:
    host: localhost
    port: 6379
    password: mypassword123

有时候你可能不想用默认的0号数据库,想用5号数据库,那就再加一个database配置:

spring:
  redis:
    host: localhost
    port: 6379
    password: mypassword123
    database: 5

说说那个“连接管家”的配置,也就是连接池,这在正式上线的项目中很重要,能保证应用在高并发时稳定运行,Spring Boot默认使用的Redis连接库是Lettuce(生菜),我们需要配置一下这个“生菜连接池”的参数。

(引用来源:Github上Lettuce客户端库的Wiki页面)

常见的连接池配置项有:

用YML配置文件快速搞定Redis客户端搭建和连接那些事儿

  • max-active:连接池里最多能同时存活的连接数,默认一般是8,如果请求太多,连接不够用,新的请求就要排队等着。
  • max-idle:连接池里允许存在的最大空闲连接数,即使没有请求,也保持这么多连接开着,随时准备服务,默认也是8。
  • min-idle:连接池里至少要维持的最小空闲连接数,防止突然来流量时临时创建连接跟不上,默认是0。
  • max-wait:当连接池耗尽时,获取一个连接最多等待多长时间,超过这个时间还拿不到就报错,默认是-1,表示一直等下去,不建议这样设,最好给个毫秒数,比如3000ms(3秒)。

把这些连接池配置加到YML里,整个配置就看起来专业多了:

spring:
  redis:
    host: your-redis-server.com  # 这里换成你真实的Redis服务器地址
    port: 6379
    password: your-strong-password-here # 这里换成你真实的密码
    database: 0
    lettuce:
      pool:
        max-active: 20   # 最大连接数设大点,应对并发
        max-idle: 10     # 最大空闲连接
        min-idle: 5      # 最小空闲连接,保持一定 warm-up
        max-wait: 2000ms # 等不到连接最多等2秒
    timeout: 2000ms      # 这是指连接Redis服务器本身的超时时间

看到了吗?配置都在spring.redis这个大树干下面生长开来了。lettuce.pool是专门用来配置连接池的。

YML文件配置好后,你基本上就不用管了,Spring Boot的自动配置功能会帮你搞定剩下的一切:它看到你配了Redis的相关参数,就会自动帮你创建一个RedisTemplate对象(这就是我们操作Redis的主要工具),你在代码里只需要注入(@Autowired)这个RedisTemplate,就可以直接用它来存数据、取数据了,非常省心。

(引用来源:开源中国社区关于Spring Boot Redis集成的讨论帖)

最后再提醒几个小事儿:

  • YML对缩进非常敏感,一定要用空格,通常每级缩进两个空格。
  • 冒号后面一定要跟一个空格,然后再写值。
  • 如果密码里含有特殊字符,比如或者,最好用英文单引号或双引号包起来,像这样password: "abc#123!"
  • 配置写完后,最好启动应用看看控制台有没有报连接错误,没有错误日志就说明连接成功啦。

就是用YML配置文件快速搞定Redis客户端搭建和连接的全部核心内容,通过这个简单的配置文件,你就能轻松地将你的应用和Redis连接起来,开始使用这个高性能的缓存和数据存储工具了。