概述
在做项目中使用redis的incr以及hincrby自增时,出现自增失败,set之后的数据,无法自增,当redis中不存在该key时,直接用incr是成功的。查找了原因,是因为phpredis初始化的时候,设置了php序列化,即:$redis->setOption( Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP );
const OPT_SERIALIZER = 1;
const SERIALIZER_PHP = 1;
每次在redis中去set的时候,都会对值进行序列化操作,
直接在redis-cli中操作:set key 1;get得到的值为“1”;此时是可以incr自增操作的,自增后获取的值为“2”;
当通过项目中php实例化操作之后,即在项目中执行 $redis->set(key,2);之后,在$redis->incr(key)时失败,然后在redis-cli中获取值时发现值变为“i:2”,不再是整形“2”了,因此自增失败。
所以,我感觉可以不序列化,或者对需要自增的数据,不要进行set等操作。
最后
以上就是能干啤酒为你收集整理的php redis自加1,phpredis中incr以及decr等自增命令出现的问题的全部内容,希望文章能够帮你解决php redis自加1,phpredis中incr以及decr等自增命令出现的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复