나는 내 프로그램에서 phpredis를 사용하고 있고, redis 서버에 무언가를 저장하고, 같은 요청이 올 때 (같은 날) 가져 오지만 항상 빈 결과를 얻습니다. 누구든지 내게 깨달음을 줄 수 있습니까? 다음은 사용중인 Cache 클래스의 코드입니다.
<?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에 저장되었지만 select 문없이 기본적으로 DB 0에 있어야한다고 생각했지만 프로그램은 db 0을 검색했습니다. 물론 아무것도 반환되지 않았습니다. 이제 DB를 선택하지 않았는데 왜 데이터가 DB 5로 이동했는지 궁금합니다.
마지막으로 여기서 무슨 일이 일어 났는지 알아 냈습니다. 키-값 쌍을 저장하기 전에 Redis 서버와도 통신 한 코드가 있었고 명시 적으로 DB 5를 선택했고 내 redis 연결의 기본 DB가 마지막 컨텍스트의 영향을 받았기 때문에 데이터가 DB에 저장되었습니다. 5. 우연히 데이터를 검색하려고 할 때 마지막 redis 연결에서 DB 0을 사용했지만 당연히 아무것도 얻지 못했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다