暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Thinkphp中封装Redis多库单例操作类

php中文网最新课程 2020-09-09
2255

php中文网最新课程

每日17点准时技术干货分享

在Thinkphp项目中封装一个Redis多库单例操作类

1.操作前的准备

如果没有安装phpredis模块那么先执行

    composer require predis/predis

    2.配置Redis连接信息

    在app\config\cache.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.编写代码

          在app\common下创建文件Redis.php

            <?php


            namespace app\common;use think\facade\Config;


            use think\cache\driver\redis 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('cache.stores.redis');
            $options['select'] = $db;
            $this->hash = $db;
            $this->options = array_merge($this->options, $options);
            parent::__construct();
            }


            private function __clone()
            {
            }


            /**
            * @param int $db
            * @return \Predis\Client|\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->hash]->close();
            unset(self::$instance[$this->hash]);
            }}

            4.使用方式

              use app\common\Redis;


              $redis = Redis::instance(4);
              $redis->hSet('user:1', 'userName', 'admin');


              Redis::instance(1)->hSet('user', 'name', 'admin1');
              Redis::instance(2)->hSet('user', 'name', 'admin2');
              Redis::instance(3)->hSet('user', 'name', 'admin3');
                更多使用方法请参考redis命令手册:
                https://www.php.cn/course/49.html

                请点击下方:“阅读原文”,在线查看!

                文章转载自php中文网最新课程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论