问题描述
存入的是点赞的数据,包括点赞用户id、被点赞文章id、被点赞回答id。后端传入的数据已经是字符类型,但后端报错Java.lang.classcastexception: java.lang.Integer cannot be cast to java.lang.String。
问题分析
从错误信息中可以看出,问题出在值为stringredisserializer序列化的hash值上。当试图将整型值(constant.redis_like_code)放入使用stringredisserializer序列化的hash中时,就发生了类型转换错误。
要解决此问题,可以将constant.redis_like_code的值更改为string类型,以便与stringredisserializer兼容。或者,也可以将hash值序列化器更改为支持整型的序列化器,例如jackson2jsonredisserializer。
修改后的代码
@Override public void saveLiked2Redis(String likeUserID, String likePostID, String likeAnswerID) { String key = RedisKeyUtils.getLikedKey(likeUserID, likePostID, likeAnswerID); // 将REDIS_LIKE_CODE改为string类型 String value = Constant.REDIS_LIKE_CODE.toString(); redisTemplate.opsForHash().put(RedisKeyUtils.MAP_KEY_USER_LIKED, key, value); }