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

摘要:
在项目中使用Redis的incr和hincrby自动递增时,集合后的数据在Redis中不存在,因为PHP序列化和OPT是在初始化phpredis_SERIALIZER:SERIALIZER_PHP时设置的):constSERIALIZER_PHP=1;每次设置Redis时;将序列化值;直接在redis cli中操作。自动递增后获得的值为“

在做项目中使用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的序列化。

免责声明:文章转载自《phpredis中incr以及decr等自增命令出现的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MooseFs集群故障恢复运维内存泄露和CPU持续升高问题排查与解决下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JAVA实现聚类指标的计算Purity、NMI、RI、Precision、Recall、F值。

第一个:计算NMI的: package clusters; import java.io.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; /** * DATE: 16-6-18 TIME: 上午10:00 */...

redis部署到云服务器上的一些坑

最近做项目需要部署redis,特记录一下部署时遇到的坑。 一、对redis.conf配置文件的配置 1、将bind属性注释掉 bind是绑定的主机地址,你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接,所以为了让外部的所有接口都被redis监听,需要将bind注释掉。 #bind 127.0.0.1 2、将daemonize属性设置为yes...

RocketMQ系列:单机快速搭建单broker环境

本文使用rocketmq的fast-try.sh快速在centos7上搭建一个单机版的rocketmq,单机版仅用于本地调试,不能用于生产环境。 1. 支持系统 Centos7/Ubuntu16/Mac/Windows 2. 配置建议 cpu:4核以上 内存:8G以上 硬盘:20G以上 3. 下载&解压Rockmet 3.1 下载 访问:http:...

自动化运维工具puppet详解(二)

一、class 类   1)什么是类?   类是puppet中命名的代码模块,常用于定义一组通用目标的资源,可在puppet全局调用;  类可以被继承,也可以包含子类;  具体定义的语法如下: class NAME{ ... puppet code ... }   其中,在我们定义的时候,需要注意的是: 类的名称只能以小写字母开头,可以包含小字字母、...

树状数组求逆序对 附HDU1394

清楚的图解,解释树状数组求逆序对的方法,转载:https://blog.csdn.net/ssimple_y/article/details/53744096 题目:https://vjudge.net/problem/HDU-1394 思路:因为数字[1,n],把a[i]放到末尾,逆序对数量会增加n-a[i]个,即比它大的数字个数, 减少a[i]-1个,...

使用filebeat 收集日志到logstash 收集日志redis再到logstash到es

大型场合的工作流程图 filebeat -->logstash ---> redis ---> logstash --->es 工作环境: 需要两台logstash, 安装jdk8 [root@es-web1]# apt install openjdk-8-jdk -y 这里已经安装filebeat 配置filebeat(这里的...