Redis存储多了引号

今天接到一个需求,php直接往redis队列里面加数据,在redis出问题时,php会报错,导致整个yui框架的瘫痪,由于公司企业产品是base在php下面的,这个问题就是一个生产问题。

解决办法为:用java去实现往redis里加数据的部分,以rest api的形式暴露出来。(解决方案有很多种,只是最后采取了这种解决方案)

于是我就去写这么一个简单的接口,由于之前所有的redis初始化设置都是我基本框架配置好的,所以,我只是改了一个redis链接,就开始实现了,我看到的之前的数据是这样的。

本着不影响他人的想法,我的目标就是最终插入数据和这条一样。

 

当我很快写完测试代码,一调试。

 

 有两点区别:

1.外层多了一层引号。

2.内部的引号前多了斜杠。

首先自己YY了一下,好像我很多时候在前端js去处理时,需要这样的数据。 于是去找php后端拿代码,看了一下代码,和我没啥区别,也是把一个json数据,toJSONStr之后,放到redis.

于是乎,去百度搜索了一下,这就是开始了一个更大的坑,百度会告诉你,类型的问题,需要把JSONObject转成Object再存储,还有的说,fastjson本身有问题。

于是开始了一上午的修改代码,调试,调试。

最后发现是序列化的问题。

在redisConfig里面,有这样的代码。

template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
//template.setValueSerializer(jackson2JsonRedisSerializer);
template.setValueSerializer(stringRedisSerializer);
之前在序列化时,是jackson2JsonRedisSerializer,改成stringRedisSerializer.
那么问题就来了,在redisConfig里并没有指定反序列化,所以这两种情况取值是否会出问题呢?
直接上结果:
取值完成没有影响。把这个问题记录一下,以免以后发现查证。

 

posted @ 2020-05-11 10:00  helloCZ  阅读(6502)  评论(0编辑  收藏  举报