gpt4 book ai didi

php - set 在 redis 中成功执行,但什么也没得到

转载 作者:IT王子 更新时间:2023-10-29 06:14:57 26 4
gpt4 key购买 nike

我在我的程序中使用 phpredis,在 redis 服务器中存储一些东西,当相同的请求到来时(在同一天)获取它们,但我总是得到空结果。谁能给我一些启发?这是我正在使用的缓存类的代码:

<?php
class Cache
{
public static function getInstance()
{
static $instance = null;
null == $instance && $instance = new self();
return $instance;
}

protected function __construct()
{
}

protected function getR()
{
static $r = NULL;
if (NULL == $r) {
$r = new Redis();
try {
$r->pconnect(HOST, PORT, 5);
} catch(Exception $ex) {
//log
try {
$api->connect(HOST, PORT, 5);
} catch (Exception $ex) {
//log
}
}
}

return $r;
}

public function getValue($key)
{
$result = array();
$r = $this->getR();
if(!empty($r)) {
try{
$result = $r->hKeys($key);
$r->setTimeout($keys, 86400);
} catch (Exception $ex){
//log
}
}

return $result; // return true
}

public function setValue($key, $value)
{
$result = false;
$r = $this->getR();
if(!empty($r)) {
try{
$result = $r->hMset($key, $value);
} catch (Exception $ex){
//log
}
}
}
}
?>

编辑:
我用 redis-cli 检查了键值,发现了一些有线的东西:键值数据存储在 db 5 中,而我认为默认情况下它应该在 DB 0 中,没有 select 语句,但是程序检索到 db 0,当然没有回来。现在我想知道为什么数据会转到 DB 5,因为我没有选择 DB。

最佳答案

终于,我弄清楚了这里发生了什么。在我存储我的键值对之前,有一些代码也与 Redis 服务器通信并且它明确选择了 DB 5,并且我的 redis 连接的默认 DB 受到最后一个上下文的影响,所以我的数据存储在 DB 5 中。巧合的是,当我想检索我的数据时,最后一个 redis 连接使用了 DB 0,当然我一无所获。

关于php - set 在 redis 中成功执行,但什么也没得到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com