spring-data-redis接口调用出现乱码的问题

来源:互联网 发布:螺旋楼梯计算软件 编辑:程序博客网 时间:2024/06/08 12:39

先上个图,使用redisTemplate接口调用数据的时候发现结果是空的,这个就奇怪了,写进去的数据用可视化软件查出来是这样的:

ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath*:applicationContext-redis2.xml");redisTemplate = (RedisTemplate)classPathXmlApplicationContext.getBean("redisTemplate");
public void testGeoPos(){    ZSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();    Set set = zSetOperations.range("beijing",0,zSetOperations.size("beijing"));    System.out.print(set.toString()); //   zSetOperations.add("beijing","hehe",1);    GeoOperations<String, String> geoOperations = redisTemplate.opsForGeo();    List<Point> list = redisTemplate.opsForGeo().geoPos("beijing","dongcheng");    System.out.println(list.toString());}
用终端登陆进去以后发现数据确实是创建了,但是名称前面多了乱码


解决的方法,百度以后发现通过网络传输的数据必须序列化以后才能使用,原因可以百度一下,有两种解决办法:

1、在代码里将redisTemplate序列化;

2、spring架构可以在XML里配置序列化。

redisTemplate.setKeySerializer(stringSerializer);redisTemplate.setValueSerializer(stringSerializer);redisTemplate.setHashKeySerializer(stringSerializer);redisTemplate.setHashValueSerializer(stringSerializer);

 <bean id="redisTemplate" name="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">        <property name="connectionFactory" ref="redisConnectionFactory" />        <property name="keySerializer" ref="stringRedisSerializer" />        <property name="valueSerializer" ref="stringRedisSerializer" />        <property name="hashKeySerializer" ref="stringRedisSerializer" />        <property name="hashValueSerializer" ref="jackson2JsonRedisSerializer" />        <!-- <property name="enableTransactionSupport" value="true"/> -->    </bean>
 <bean id="stringRedisSerializer"        class="org.springframework.data.redis.serializer.StringRedisSerializer" />

修改以后就可以正确读取了



阅读全文
0 0
原创粉丝点击