首页 > 解决方案 > 在 redis 中设置布尔值导致 PHP 中出现 502 错误

问题描述

为什么 PHP 代码可以

$redis = new Redis();
$redis->connect('127.0.0.1', '6379');
$redis->set("testkeybool", false);

导致502错误?

2018/10/30 13:59:29 [error] 23512#0: *12 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: ..., server: my.host, request: "GET /test.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "..."

如果我将整数设置为布尔值,它可以正常工作

$redis->set("testkeybool", 0);

nginx 配置

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

PHP 版本 PHP 5.6.36

标签: phpredis

解决方案


这是因为 redis 只支持以下数据类型string, list, hash, set, sorted set, bitmaps, and hyperlogs。当使用设置器$redis->set();(设置键来保存字符串值)时,它需要采用其中一种数据类型的形式

尝试

$redis = new Redis();
$redis->connect('127.0.0.1', '6379');
$redis->set('testkeybool', 'false');

推荐阅读