redis长连接与单例

<?php

namespace app\admin\redis;

use think\cache\driver\Redis;

class RedisClubPool
{

    public static $redis = null;
    public static $prefix = '';
    public static $user_config = 'redis_club_pool';

    public static function getDb($roomID)
    {
        $db = 0;
        config(self::$user_config . '.select', $db);
        self::$prefix = 'club_pool:' . $roomID . ':';
    }

    public static function init($roomID)
    {
        self::getDb($roomID);

        if (!self::$redis) {

            $options = config(self::$user_config);

            if (!extension_loaded('redis')) {
                throw new \BadFunctionCallException('not support: redis');
            }

            if (empty($options)) {
                throw new \BadFunctionCallException('not config: redis');
            }

            self::$redis = new \Redis;
            if ($options['persistent']) {
                self::$redis->pconnect($options['host'], $options['port'], $options['timeout'], 'persistent_id_' . $options['select']);
            } else {
                self::$redis->connect($options['host'], $options['port'], $options['timeout']);
            }

            if ('' != $options['password']) {
                self::$redis->auth($options['password']);
            }

            if (0 != $options['select']) {
                self::$redis->select($options['select']);
            }
        }
        return self::$redis;
    }

    public static function hmget($clubroomID, $fields = [])
    {
        if (empty($fields)) {
            return false;
        }
        $result = self::$redis->hmget(self::$prefix . $clubroomID, $fields);
        return $result;
    }

    public static function hget($clubroomID, $field)
    {
        self::init($clubroomID);
        return self::$redis->hget(self::$prefix . $field, $field);
    }

    public static function hgetall($clubroomID, $room_id)
    {
        self::init($clubroomID);
        return self::$redis->hgetall(self::$prefix . $room_id);
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值