制作网站能赚钱吗/百度引流免费推广怎么做
在做项目中使用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等操作。