redis存储数据时遇到参数类型转换的问题?
背景描述
在使用redis存储点赞数据时,后端传入的数据已经转换成字符类型,但后端报错:"java.lang.classcastexception: java.lang.integer cannot be cast to java.lang.string"。
代码示例
redisserviceimpl.java
@override public void saveliked2redis(string likeuserid, string likepostid, string likeanswerid) { string key = rediskeyutils.getlikedkey(likeuserid, likepostid, likeanswerid); redistemplate.opsforhash().put(rediskeyutils.map_key_user_liked, key, constant.redis_like_code); }
登录后复制
redislikecontroller.java
//点赞 @requiresauthentication @requestmapping("/userlike") public responsejson userlike(@requestbody userlike userlike) { redisservice.saveliked2redis(userlike.getlikeuserid(), userlike.getlikepostid(), userlike.getlikeanswerid()); return new responsejson(constant.http_code_ok, null, "点赞成功"); }
登录后复制
userlike.java
public class userlike { private integer id;//主键id private string likeuserid;//点赞人id private string likepostid;//被点赞文章id private string likeanswerid;//被点赞回答id private integer status = 0;//点赞的状态,默认未点赞0 0:未点赞 1:已点赞 //省略了构造部分 }
登录后复制
出错信息
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
登录后复制
解决方案
错误的原因是constant.redis_like_code是integer类型,而hash的value序列化使用的是stringredisserializer。
可以通过修改constant.redis_like_code为string类型来解决这个问题,或者使用自定义的序列化器,对需要序列化的对象进行自定义序列化。
以上就是Redis存储点赞数据时,为何出现java.lang.ClassCastException异常?的详细内容,更多请关注抖狐科技其它相关文章!
-
抖音商城怎么分期购物
在抖音商城分期购物,需满足实名认证和开通抖音支付。具体步骤为:选择支持分期的商品,前往购物车选择“分期付款”,再选择分期期数和支付方式(花呗分期、京东白条分期或招联分期)。分期付款需按时还款,并会产生...
-
python3.9.0怎么下载
要下载 python 3.9.0,需要:访问 python 官方网站并选择与操作系统版本相对应的链接;下载可执行文件;运行安装程序并确保将 python 添加到系统路径;验证安装,键入“python...
-
脑洞大侦探掀开地毯如何通关 掀开地毯通关方法
在《脑洞大侦探》的关键时刻,您可能面临掀开地毯的挑战。掀开地毯可能是游戏的关键,为您揭示隐藏的秘密或丢失的物品。php小编柚子在此为您提供详尽的指南,一步一步指导您完成掀开地毯的任务,助力您顺利通过关...
-
为什么 a 标签可以设置 margin
图示a标签中margin-top值有效的疑虑 在一段HTML和CSS代码中,我们看到一个具有 "margin-top" 值的标签,这引起了我们的疑问:标签作为行内元素,为何可以拥有垂直边缘距? 揭示谜...
-
如何将 PHP 和 Python 代码中的字典排序与签名生成逻辑移植到 Go 语言?
php 与 python 代码在 go 语言中的转换 对于 php 中字典排序并序列化生成签名的代码,在 go 语言中可通过如下方式实现:package mainimport ("crypto/md5...