Spring Redis 初学笔记 - 配置Redis

目的是加强 Java 后台数据传输安全性—— Token令牌方法 (搭配Redis)

  1. 安装 Redis
  2. 配置Redis
  3. Token 拦截器

一、导入 Maven 依赖

pom.xml
<!--Redis依赖包 下面三个-->
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-redis</artifactId>
      <version>1.4.1.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.5.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.2</version>
    </dependency>

请千万注意上面的 三个依赖包的版本

我一开始导包,所有的版本都要去Maven官网找最新的。

结果调试时出现了各种问题!面向stackOverflow编程了半天!最后也于心不甘的换回了低版本。

有些版本之间的依赖可以在Maven官网或者各个包里的pom.xml文件中查看。

可是有些问题真的令人头疼,比如这个版本的某某类找不到导致加载失败,某某方法不存在导致加载失败等。

如果兄弟配置高版本的没出错,或者有功夫折腾解决问题的,请传授高招【抱拳】!

二、配置 Spring xml文件

xxx-servlet.xml
<!-- 导入redis.properties文件 -->
    <context:property-placeholder location="classpath:redis.properties"/>
    <!-- Redis 连接池参数 -->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"
          p:maxIdle="${redis.maxIdle}"
          p:maxTotal="${redis.maxTotal}"
          p:maxWaitMillis="${redis.maxWaitMillis}"
          p:minEvictableIdleTimeMillis="${redis.minEvictableIdleTimeMillis}"
          p:numTestsPerEvictionRun="${redis.numTestsPerEvictionRun}"
          p:timeBetweenEvictionRunsMillis="${redis.timeBetweenEvictionRunsMillis}"
          p:testOnBorrow="${redis.testOnBorrow}"
          p:testWhileIdle="${redis.testWhileIdle}"/>

    <bean id="jedisConnFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:use-pool="true"
          p:hostName="${redis.hostName}"
          p:port="${redis.port}"
          p:password="${redis.password}"
          p:timeout="${redis.timeout}"/>

    <bean id="redisTemplate"
          class="org.springframework.data.redis.core.StringRedisTemplate"
          p:connection-factory-ref="jedisConnFactory"/>

其中用到了p命名空间

<beans ...
      xmlns:p="http://www.springframework.org/schema/p" 
      ...>
    ...
</beans>

这里再讲一下我踩过的坑,最初我将上部分配置写到一个新的配置文件中,最后在spring主配置文件中导入

发现redis.properties中的参数无法调用,查了一下 某大神说这可能与命名空间冲突有关

所以后来将所有配置代码放到主配置文件中了,日后再研究将配置文件分开打包的操作。

redis.properties
redis.hostName=127.0.0.1
# 端口号
redis.port=6379
# 如果有密码
redis.password=RedisPassword
# 客户端超时时间单位是毫秒 默认是2000
redis.timeout=10000

# 最大空闲数
redis.maxIdle=300
# 连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
# redis.maxActive=600
# 控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
redis.maxTotal=1000
# 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
redis.maxWaitMillis=3000
# 连接的最小空闲时间 默认1800000毫秒(30分钟)
redis.minEvictableIdleTimeMillis=300000
# 每次释放连接的最大数目,默认3
redis.numTestsPerEvictionRun=1024
# 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
redis.timeBetweenEvictionRunsMillis=30000
# 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
redis.testOnBorrow=true
# 在空闲时检查有效性, 默认false
redis.testWhileIdle=true

安装好 Redis 默认密码为空,需要手动配置。

默认端口号 6379

三、运行项目