一、该问题的重现步骤是什么?
1. 项目需要自动生成单号功能,想用redis的incr功能来做,但是incr总报这个错。
2.
@GetMapping("/ss") public R<String> ss() { boolean exist = redisCache.exists("bill_code"); if (!exist) { Map<Object, Object> map = new HashMap<>(); map.put("SA", 10); map.put("LO", 11); redisCache.hMset("bill_code", map); } else { redisCache.getHashOps().increment("bill_code", "SA", 1); } return R.status(true); }
3.
{
"code": 500,
"success": false,
"data": {},
"msg": "Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: ERR hash value is not an integer"
}
网上很多资料说是序列化的问题,改为StringRedisSerializer就会正常,但是看blade-starter-redis里面有这样一段注解:
/**
* 将redis key序列化为字符串
*
* <p>
* spring cache中的简单基本类型直接使用 StringRedisSerializer 会有问题
* </p>
*
* @author L.cm
*/
扫一扫访问 Blade技术社区 移动端