Spring Redis 初学笔记 - 配置Redis
目的是加强 Java 后台数据传输安全性—— Token令牌方法 (搭配Redis)
- 安装 Redis
- 配置Redis
- 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
三、运行项目