Redis点赞数Integer转换错误怎么解决?
Redis存储点赞数据时类型转换异常排查在使用Redis存储点赞数据时,常常会遇到数据类型转换的问题。本文将针�...

排查Redis点赞功能中Integer类型转换异常
在使用Redis存储点赞数据时,经常会遇到类型转换异常。本文通过一个实际案例,分析并解决java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String异常。
该问题出现在一个点赞功能中。后端接收点赞用户信息(点赞用户ID、被点赞文章ID和被点赞回答ID),并将其存储到Redis。传入数据类型为字符串,但程序却抛出java.lang.ClassCastException异常。
代码片段如下:
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:已点赞
//省略了构造部分
}
错误信息显示异常发生在redisTemplate.opsForHash().put()方法中。原因是redisTemplate使用了StringRedisSerializer进行序列化,而Constant.REDIS_LIKE_CODE却是Integer类型。StringRedisSerializer无法直接将Integer对象序列化为字符串,导致类型转换异常。
解决方法是将Constant.REDIS_LIKE_CODE的类型修改为String类型。这样StringRedisSerializer就能正确序列化该值并存储到Redis中。 修改后,问题即可解决。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















