中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP如何將Redis封裝為單例模式

發布時間:2020-06-11 15:48:48 來源:億速云 閱讀:363 作者:元一 欄目:編程語言

概念

redis

是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。

單例模式

屬于創建類型的一種常用的軟件設計模式。通過單例模式的方法創建的類在當前進程中只有一個實例(根據需要,也有可能一個線程中屬于單例,如:僅線程上下文內使用同一個實例)

實現方法:

<?php
/** 
* Created by PhpStorm. 
* User: Administrator 
* Date: 2018/7/16 
* Time: 14:19 
*/
/** 
* 實現同步實現同步redis 
*/
namespace  app\common\lib\redis;
class Predis{ 
   
/**     
* 單例模式的變量     
* @var null     
*/    
private static $_instance=null;     
public $redis = '';
      
/**     
* 單例模式應用防止多次連接redis,提高性能     
* @return Predis|null     
*/    
public static function getInstance(){        
    if(is_null(self::$_instance) || empty(self::$_instance)){            
        self::$_instance = new self();        
    }        
    return self::$_instance;    
}
      
/**     
*連接redis     
*/    
private function __construct()    {        
    $this->redis = new \Redis();        
    $result = $this->redis->connect(config('redis.host'), config('redis.port'));       
    if($result==false){            
        throw new \Exception('redis connect fail');        
    }     
}     
/**     
*redis set方法的應用     
* @param $key     
* @param $value     
* @param int $time     
* @return bool|string     
*/    
public function set($key,$value,$time=0){        
    if(!$key){            
        return '';        
    }         
    if(is_array($value)){            
        $value = json_encode($value);       
    }         
    if(!$time){            
        return $this->redis->set($key,$value);       
    }        
    return $this->redis->setex($key,$time,$value);    
}     
/**     
* redis get方法     
* @param $key     
* @return string     
*/    
public function get($key){        
    if(!$key){            
        return '';        
    }        
    return $this->redis->get($key);    
}     
/**     
* 獲取有序列表的結合     
* @param $key     
* @return array     
*/    
public function sMembers($key) {        
    return $this->redis->sMembers($key);    
}      
/**     
* 獲取list的元素值結合     
*/    
public function lRange($key){        
    var_dump($key);        
    return $this->redis->lRange($key,0,-1);    
}     
/**     
* 魔術方法__call     
*/    
public function __call($name, $arguments) {        
    echo $name.PHP_EOL;        
    print_r($arguments);        
    if(count($arguments) != 2) {            
        return '';       
    }        
    $this->redis->$name($arguments[0], $arguments[1]);   
} 
}

以上就是在 PHP 中將 Redis 封裝成單例模式的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

轮台县| 垦利县| 平原县| 温宿县| 新竹市| 元阳县| 太和县| 和龙市| 弋阳县| 麻栗坡县| 彭泽县| 互助| 中江县| 五台县| 日照市| 泸州市| 顺平县| 方正县| 石城县| 榆树市| 铜陵市| 乌兰浩特市| 彭阳县| 泾川县| 安宁市| 合川市| 乐平市| 高碑店市| 涿州市| 双柏县| 巴彦县| 富民县| 忻城县| 阿克| 丰都县| 孟连| 新民市| 珠海市| 东城区| 鹤岗市| 阳谷县|