作者:普林 | 来源:互联网 | 2023-05-29 19:01
| Q | A| ------------------- | -----| Swoft version | 1.0.0| Swoole version
| Q | A
| ------------------- | -----
| Swoft version | 1.0.0
| Swoole version | 4.0.3
| PHP version | 7.1.20
| Runtime environment | Mac
hgetall 返回的不是key=>value的形式,而是把所有的 key\value 都放到了数组里面
set\hmset\hset 时候,如果是整形的,设置完之后无法 hincrby 或者 incrby ,提示不是一个整形数字
例如如下代码:
$rd2 = new \Redis();
$rd2->connect("127.0.0.1",6379);
$rd2->select(6);
$rd2->hMset('myms3', array('name' => 'Joe', 'salary' => 2000));
1 2
| $this->gameRedis->hMset('myms1', array('name' => 'Joe', 'salary' => 2000));
$this->gameRedis->hSet("myms1","d",4); |
用原装的redis类执行后和内置的redis执行后,redis-cli 看到的是如图:
127.0.0.1:6379[6]> hgetall myms1
"name"
"s:3:"Joe";"
"salary"
"i:2000;"
"d"
"i:4;"
127.0.0.1:6379[6]> hgetall myms3
"name"
"Joe"
"salary"
"2000"
"salery"
"111"
而 myms1 是无法用 hincrby myms1 salary 1 的命令的,会提示 salary 不是整形
hgetall的问题,处理的时候就是不用 hgetall ,改用 hmget 就没事儿,但是 hmset 的int型字段实在没办法了。紧急求助!!!!!难道要抛弃内置的redis,采用原装的\Redis,自己再链接?
该提问来源于开源项目:swoft-cloud/swoft
配置里面REDIS_SERIALIZE=1的问题,谢谢回复