当我尝试使用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提供的连接池等功能,非常便利。

广告
将在 10 秒后关闭
bannerAds