• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

redisTemplate.ophotoshopForValue().get(KEY)从Redis取出的值为null 存入的key被加上了引号

武飞扬头像
向来萧瑟也无畏
帮助7

省流

1.用StringRedisTemplate,且变量类型确认为String
2.变量值是否自带引号
 
 
 
 

说明

用redisTemplate.opsForValue().get(KEY)从Redis中取出的值为null(不管是RedisTemplate还是StringRedisTemplate)
 
 

仔细一看发现:存入redis后,key左右多了个双引号。
学新通

测试了一下必须加上引号才能取出来,不然就是null
学新通

 
 

解决(可能的原因)

以下不是按顺序的。每一点对应一种情况。仅供参考,有错轻喷
 
 

1.换RedisTemplate为StringRedisTemplate就可以。
 
原因如下(摘自其他文章)
RedisTemplate使用的是JdkSerializationRedisSerializer 存入数据会将数据先序列化成字节数组然后在存入Redis数据库。

 
 
2.如果用RedisTemplate,需要作一些配置,大致是修改序列化的类(以下代码只是简单说一下,具体可以看下别人的文章)

//template.setKeySerializer(jackson2JsonRedisSerializer);
//使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());

 
 
3.如果用的是StringRedisTemplate(只能支持String),一定要检查你set的key和value是不是String,否则的话总是加上引号。

 
 
4.检查前后端代码。看变量是不是本来就自带双引号。

 
 

补充

我就是因为最后两点,没检查好变量类型和变量值,而且基础不扎实,前后端传数据的时候想当然了。
 
 
前后端代码截取片段如下:

//前端。请求Ajax时,其中的data。email是一个变量,字符串,存了邮箱地址
//data : JSON.stringify(email),
data : JSON.stringify({"email":email}),
//后端,实际上是post请求
@RequestMapping("/send")
public R send(@RequestBody String email){}

这里前后端有问题的。假设email值为"123@qq.com",

        对于data : JSON.stringify(email),传到后端的时候,后端email变量就是="“123@qq.com”"

        对于data : JSON.stringify({"email":email}),后端email变量就是="{“email”:“123@qq.com”}",

        因为它直接把前端传过来的整个放进后端email变量了。存进redis的时候自然有双引号。

 
 
这里,最好是后端直接用一个vo对象接收,前端用data : JSON.stringify({"email":email})

 
 

 
 

参考

StringRedisTemplate操作redis数据

前端json数据 到 自动后台转换为对象 Spring

RedisTemplate.opsForHash().entries(hashkey)方法出现多双引号序列问题

解决redis redistemplate KEY为字符串是多双引号的问题

redis使用Jackson2JsonRedisSerializer序列化问题

RedisTemplate序列化StringRedisSerializer只能支持String的坑

StringRedisTemplate 和RedisTemplate 对比分析

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhfhhh
系列文章
更多 icon
同类精品
更多 icon
继续加载