jedis,spring-redis-data 整合使用,版本問題異常以及解決。


最近整合使用redis spring-redis 出現了一下問題

 

spring:3.2.4.RELEASE

jedis: jedis  2.4.2

spring-data-redis: 1.5.2.RELEASE

各種折騰換了N個版本之后,啟動的時候報錯主要有一下兩種:

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.isUserLevelMethod(Ljava/lang/reflect/Method;)Z
java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    org/springframework/data/redis/connection/jedis/JedisConnectionFactory.afterPropertiesSet()V

最后得到如下配置是OK的:

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.4.2</version>
        </dependency>
        <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-redis</artifactId>
          <version>1.3.0.RELEASE</version>
        </dependency>    

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-xxx</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>

版本問題解決了,先貼各項配置代碼:

spring:

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal" value="32"></property>
        <property name="maxIdle" value="6"></property>
        <property name="testOnBorrow" value="true" />
    </bean>

    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
        <property name="poolConfig" ref="jedisPoolConfig"></property>
        <property name="hostName" value="123.56.72.172"></property>
        <property name="port" value="6379"></property>
        <property name="password" value="redis"></property>
        <property name="timeout" value="15000"></property>
        <property name="usePool" value="true"></property>
    </bean>
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"></property>
        <property name="keySerializer">
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
        </property>
        <property name="valueSerializer">
            <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
        </property>
    </bean>

注入:

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

使用:

        String paramK = "spring-redis-key";
        String paramV ="Hello,spring-redis-data!!!";
        redisTemplate.opsForValue().set(paramK, paramV);

 

存值成功之后,存的值為:

this ok.  

在 redis-cli中查看值結果如下:

get spring-redis-key
"\xac\xed\x00\x05t\x00\bthis ok."

發現沒,多了一個前綴    \xac\xed\x00\x05t\x00\b

 

這個為序列化的問題:http://blog.csdn.net/yunhaibin/article/details/9001198

 

 參考資料:

http://zhaobing315.iteye.com/blog/2082189

 

http://www.cnblogs.com/tankaixiong/p/3660075.html

 

http://www.sxt.cn/u/2839/blog/4363

 http://www.cnblogs.com/tankaixiong/p/3660075.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM