關于ThinkPHP6多例Redis類實現

下面由thinkphp教程欄目給大家介紹thinkphp6多例redis類實現,希望對需要的朋友有所幫助!

關于ThinkPHP6多例Redis類實現

在Thinkphp項目中封裝一個redis多庫單例操作類

1.操作前的準備

如果沒有安裝phpredis模塊那么先執行

composer?require?predis/predis

2.配置Redis連接信息

在appconfigcache.php中配置

立即學習PHP免費學習筆記(深入)”;

'redis'?=>?[ ???//?驅動方式 ????'type'???????=>?'redis', ????//?連接地址 ????'host'???????=>?Env::get('redis.host'), ????//?端口 ????'port'???????=>?Env::get('redis.port'),],

更多配置參考

/** ?*?配置參數 ?*?@var?array ?*/protected?$options?=?[ ????'host'???????=>?'127.0.0.1', ????'port'???????=>?6379, ????'password'???=>?'', ????'select'?????=>?0, ????'timeout'????=>?0, ????'expire'?????=>?0, ????'persistent'?=>?false, ????'prefix'?????=>?'', ????'tag_prefix'?=>?'tag:', ????'serialize'??=>?[],];

在.env中配置連接信息

[REDIS]host?=?127.0.0.1 port?=?6379

3.編寫代碼

在appcommon下創建文件Redis.php

<?phpnamespace  appcommon;use thinkfacadeConfig;use thinkcachedriverredis as ThinkRedis;class Redis extends ThinkRedis{     /**      * @var int      */     protected $hash;      /**      * @var array      */     protected static $instance = [];      /**      * Redis constructor.      * @param $db      */     private function __construct($db)     {         $options = Config::get(&#39;cache.stores.redis&#39;);         $options[&#39;select&#39;] = $db;         $this->hash?=?$db; ????????$this-&gt;options?=?array_merge($this-&gt;options,?$options); ????????parent::__construct(); ????}  ????private?function?__clone() ????{ ????}  ????/** ?????*?@param?int?$db ?????*?@return?PredisClient|Redis ?????*/ ????public?static?function?instance($db?=?0) ????{ ????????if?(!?isset(self::$instance[$db]))?{ ????????????self::$instance[$db]?=?new?self($db); ????????}  ????????return?self::$instance[$db]; ????}  ????public?function?__destruct() ????{ ????????self::$instance[$this-&gt;hash]-&gt;close(); ????????unset(self::$instance[$this-&gt;hash]); ????}}

4.使用方式

use?appcommonRedis;  $redis?=?Redis::instance(4); $redis-&gt;hSet('user:1',?'userName',?'admin');  Redis::instance(1)-&gt;hSet('user',?'name',?'admin1'); Redis::instance(2)-&gt;hSet('user',?'name',?'admin2'); Redis::instance(3)-&gt;hSet('user',?'name',?'admin3');

更多使用方法請參考 thinkphp

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享