...
|
...
|
@@ -23,6 +23,15 @@ class RedisPool { |
|
|
|
|
|
public function __construct()
|
|
|
{
|
|
|
$this->conn();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 链接
|
|
|
* @author:dc
|
|
|
* @time 2023/4/12 15:10
|
|
|
*/
|
|
|
private function conn(){
|
|
|
$this->client = new \Redis();
|
|
|
|
|
|
$this->client->connect(REDIS_HOST,REDIS_PORT,1);
|
...
|
...
|
@@ -30,7 +39,6 @@ class RedisPool { |
|
|
REDIS_PASSWORD && $this->client->auth(REDIS_PASSWORD);
|
|
|
// 用库4
|
|
|
$this->client->select(REDIS_DB);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
@@ -43,7 +51,7 @@ class RedisPool { |
|
|
*/
|
|
|
public function has($key)
|
|
|
{
|
|
|
return $this->client->exists($key);
|
|
|
return $this->getClient()->exists($key);
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
@@ -56,7 +64,7 @@ class RedisPool { |
|
|
*/
|
|
|
public function get($key, $default=null)
|
|
|
{
|
|
|
$data = $this->client->get($key);
|
|
|
$data = $this->getClient()->get($key);
|
|
|
if($data === null){
|
|
|
return $default;
|
|
|
}
|
...
|
...
|
@@ -72,7 +80,7 @@ class RedisPool { |
|
|
* @time 2023/2/10 18:02
|
|
|
*/
|
|
|
public function set($key,$val,$ttl=null) {
|
|
|
return $this->client->set($key,$this->serialize($val),$ttl);
|
|
|
return $this->getClient()->set($key,$this->serialize($val),$ttl);
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
@@ -86,7 +94,7 @@ class RedisPool { |
|
|
* @time 2023/2/10 17:53
|
|
|
*/
|
|
|
public function add($key,$val,$ttl=null):mixed {
|
|
|
return $this->client->eval(
|
|
|
return $this->getClient()->eval(
|
|
|
"return redis.call('exists',KEYS[1])<1 and redis.call('setex',KEYS[1],ARGV[2],ARGV[1])",
|
|
|
[$key, $this->serialize($val), $ttl],
|
|
|
1
|
...
|
...
|
@@ -101,7 +109,7 @@ class RedisPool { |
|
|
* @time 2023/2/13 9:07
|
|
|
*/
|
|
|
public function lPush($key,$value){
|
|
|
return $this->client->lPush($key,$this->serialize($value));
|
|
|
return $this->getClient()->lPush($key,$this->serialize($value));
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -112,7 +120,7 @@ class RedisPool { |
|
|
* @time 2023/2/13 9:07
|
|
|
*/
|
|
|
public function rPush($key,$value){
|
|
|
return $this->client->rPush($key,$this->serialize($value));
|
|
|
return $this->getClient()->rPush($key,$this->serialize($value));
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -122,7 +130,7 @@ class RedisPool { |
|
|
* @time 2023/2/13 9:08
|
|
|
*/
|
|
|
public function lPop($key){
|
|
|
return $this->unserialize($this->client->lPop($key));
|
|
|
return $this->unserialize($this->getClient()->lPop($key));
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -132,7 +140,7 @@ class RedisPool { |
|
|
* @time 2023/2/13 9:09
|
|
|
*/
|
|
|
public function rPop($key){
|
|
|
return $this->unserialize($this->client->rPop($key));
|
|
|
return $this->unserialize($this->getClient()->rPop($key));
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -145,13 +153,13 @@ class RedisPool { |
|
|
*/
|
|
|
public function incr($key, $ttl = null){
|
|
|
if($ttl){
|
|
|
return $this->client->eval(
|
|
|
return $this->getClient()->eval(
|
|
|
"local x = redis.call('incr',KEYS[1]);redis.call('expire',KEYS[1],ARGV[1]);return x",
|
|
|
[$key, $ttl],
|
|
|
1
|
|
|
);
|
|
|
}
|
|
|
return $this->client->incr($key);
|
|
|
return $this->getClient()->incr($key);
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -164,13 +172,13 @@ class RedisPool { |
|
|
*/
|
|
|
public function decr($key,$ttl = null){
|
|
|
if($ttl){
|
|
|
return $this->client->eval(
|
|
|
return $this->getClient()->eval(
|
|
|
"local x = redis.call('decr',KEYS[1]);redis.call('expire',KEYS[1],ARGV[1]);return x",
|
|
|
[$key, $ttl],
|
|
|
1
|
|
|
);
|
|
|
}
|
|
|
return $this->client->decr($key);
|
|
|
return $this->getClient()->decr($key);
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
@@ -182,7 +190,7 @@ class RedisPool { |
|
|
* @time 2023/2/14 14:04
|
|
|
*/
|
|
|
public function delete($key):int {
|
|
|
return $this->client->del($key);
|
|
|
return $this->getClient()->del($key);
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -193,7 +201,7 @@ class RedisPool { |
|
|
* @time 2023/3/16 11:36
|
|
|
*/
|
|
|
public function getDel($key){
|
|
|
return $this->client->eval(
|
|
|
return $this->getClient()->eval(
|
|
|
"local x = redis.call('get',KEYS[1]);if x then redis.call('del',KEYS[1]) end return x",
|
|
|
[$key],
|
|
|
1
|
...
|
...
|
@@ -221,6 +229,19 @@ class RedisPool { |
|
|
return $val ? unserialize($val) : '';
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @return \Redis
|
|
|
* @author:dc
|
|
|
* @time 2023/4/12 15:11
|
|
|
*/
|
|
|
public function getClient(){
|
|
|
try {
|
|
|
$this->client->ping();
|
|
|
}catch (\RedisException $e){
|
|
|
$this->conn();
|
|
|
}
|
|
|
return $this->client;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
...
|
...
|
@@ -240,12 +261,6 @@ class RedisPool { |
|
|
if(empty(static::$instance[$cid])){
|
|
|
static::$instance[$cid] = new \Lib\RedisPool();
|
|
|
}
|
|
|
// ping失败了说明连接炸了
|
|
|
try {
|
|
|
static::$instance[$cid]->client->ping();
|
|
|
}catch (\RedisException $e){
|
|
|
static::$instance[$cid] = new \Lib\RedisPool();
|
|
|
}
|
|
|
|
|
|
return static::$instance[$cid];
|
|
|
}
|
...
|
...
|
@@ -259,9 +274,8 @@ class RedisPool { |
|
|
public function close(){
|
|
|
// TODO: Implement __destruct() method.
|
|
|
try {
|
|
|
if($this->client->ping()){
|
|
|
$this->client->close();
|
|
|
}
|
|
|
$this->client->ping();
|
|
|
$this->client->close();
|
|
|
}catch (\RedisException $e){}
|
|
|
|
|
|
$this->client = null;
|
...
|
...
|
|