当我尝试使用Spring Data和Jedis时,陷入了一个非常棘手的困境,无法解脱
春季数据-Redis
我之前是独立使用 jedis,但是由于在 mysql 中使用 spring-data,所以尝试将它们结合起来使用,但是遇到了问题。
环境
春季4+Maven3 Java8
Maven的配置
要使用spring-data-redis,需要先声明其依赖。
顺带一提,使用spring-data-redis时,必须定义jedis,并且不能仅使用独立定义。
在Jedis版本2.4及以上需要使用commons-pool2库,如果不定义会出现NoClassDefFoundError错误,请注意。
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.1.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4</version>
</dependency>
applicationContext.xml配置文件
以下是只包含在redis.xml中用于import的必要声明的内容。
<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="localhost"
p:port="6379"
p:password=""
p:use-pool="true"
p:pool-config-ref="jedisPoolConfig" />
<bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory"/>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"
p:maxTotal="150"
p:minIdle="5"
p:maxIdle="15"/>
进行吧,但是… ba, …)
nested exception is java.lang.ClassNotFoundException: redis.clients.jedis.JedisPoolConfig
解决方案 (jiě jué àn)
经过试错后发现,可能是由于依赖关系的问题,将所有内容升级到最新版本后无法正常运行。因此,我们决定降低版本以解决这个问题。
-
- spring-data-redis -> 1.4.0.RELEASE
-
- jedis -> 2.6.0
- common-pool2 -> 2.3
虽然有点不太舒服,但是临时地操作确认已经完成。
由于spring-data-redis的版本不同,所需的库以及其版本也会有所不同,因此需要注意。
即使jedis单独使用也没有问题,但与spring-data结合使用,可以享受spring提供的连接池等功能,非常便利。