• phpredis中incr以及decr等自增命令出现的问题


    在做项目中使用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操作或者在连接redis时 不进行php的序列化。

  • 相关阅读:
    全程软件测试_项目启动
    全程软件测试_规范测试过程
    python_json常用的方法
    python_eval的用法
    python_判断字符串编码的方法
    python_Notepad++编码集的说明
    python_编码集的介绍
    初识HTML
    mysql学习目录
    python学习目录
  • 原文地址:https://www.cnblogs.com/liliuguang/p/10906726.html
Copyright © 2020-2023  润新知