PHP redis hIncrBy 递增出现问题
程序员文章站
2024-02-06 15:36:28
...
第一次请求的时候,hGetAll返回的count_comment
是58
,然后hincrBy +1
后再hGetAll
,返回的count_comment
预期为59
却变成1
了。没有实现预期递增效果。
再次执行同样请求,hGetAll返回的count_comment
是1
,然后hincrBy +1
后再hGetAll
,返回的count_comment
是2
了。这次请求hincrBy +1
是实现的预期递增。
不太清楚是什么情况造成,找了好久没找到原因。
这里的redis
中使用phpredis
来连接count_comment
都是string类型。
回复内容:
第一次请求的时候,hGetAll返回的count_comment
是58
,然后hincrBy +1
后再hGetAll
,返回的count_comment
预期为59
却变成1
了。没有实现预期递增效果。
再次执行同样请求,hGetAll返回的count_comment
是1
,然后hincrBy +1
后再hGetAll
,返回的count_comment
是2
了。这次请求hincrBy +1
是实现的预期递增。
不太清楚是什么情况造成,找了好久没找到原因。
这里的redis
中使用phpredis
来连接count_comment
都是string类型。
我找到问题了
This is expected, you can't run INCR, INCRBY, or HINCRBY on serialized
data.
初始化redis时,使用的是SERIALIZER
格式下存储
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY);