Redis基础知识之——自定义封装单实例和普通类Redis

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis基础知识之——自定义封装单实例和普通类Redis相关的知识,希望对你有一定的参考价值。

一、普通Redis实例化类:

class MyRedis
{
    private $redis;

    public function __construct($host = ‘121.41.88.209‘, $port = 63789)
    {
        $this->redis = new Redis();
        $this->redis->connect($host, $port);
    }

    public function expire($key = null, $time = 0)
    {
        return $this->redis->expire($key, $time);
    }

    public function psubscribe($patterns = array(), $callback)
    {
        $this->redis->psubscribe($patterns, $callback);
    }

    public function setOption()
    {
        $this->redis->setOption(\Redis::OPT_READ_TIMEOUT,-1);
    }

}

二、单例模式Redis实例化类:

<?php
/**
 * Created by PhpStorm.
 * User: Tinywan
 * Date: 2016/7/3
 * Time: 9:26
 * Mail: [email protected]
 * Singleton instance
 */

namespace Org\Util;

class RedisInstance
{
    /**
     * 类对象实例数组,共有静态变量
     * @var null
     */
    private static $_instance;

    /**
     * 数据库连接资源句柄
     * @var
     */
    private static $_connectSource;

    /**
     * 私有化构造函数,防止类外实例化
     * RedisConnect constructor.
     */
    private function __construct()
    {

    }

    /**
     *  单例方法,用于访问实例的公共的静态方法
     * @return \Redis
     * @static
     */
    public static function getInstance()
    {
        if (!(static::$_instance instanceof \Redis)) {
            static::$_instance = new \Redis();
            self::getInstance()->connect(C(‘MASTER.HOST‘), C(‘MASTER.PORT‘), C(‘MASTER.TIMEOUT‘));
        }
        return static::$_instance;
    }

    /**
     * Redis数据库是否连接成功
     * @return bool|string
     */
    public static function connect()
    {
        // 如果连接资源不存在,则进行资源连接
        if (!self::$_connectSource)
        {
            //@return bool TRUE on success, FALSE on error.
            self::$_connectSource = self::getInstance()->connect(C(‘MASTER.HOST‘), C(‘MASTER.PORT‘), C(‘MASTER.TIMEOUT‘));
            // 没有资源返回
            if (!self::$_connectSource)
            {
                return ‘Redis Server Connection Fail‘;
            }
        }
        return self::$_connectSource;
    }

    /**
     * 私有化克隆函数,防止类外克隆对象
     */
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }


    /**
     * @return \Redis
     * @static
     */
    public static function test()
    {
        return ‘test‘;
    }

 

以上是关于Redis基础知识之——自定义封装单实例和普通类Redis的主要内容,如果未能解决你的问题,请参考以下文章

Redisson 分布式锁超简封装

面向对象三大特性之封装

面向对象三大特性之封装

java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类

设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

vue 自定义组件之父子组件