• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP中使用redis哨兵

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  1. 封装一个redis操作,代码如下:
class Redis {

    use Singleton;

    public static $redis = "";

    //私有化构造函数
    private function __construct()
    {
//        if (!extension_loaded('redis')) {
//            throw new \Exception("redis.so文件不存在");
//        }

        try {
            //获取redis配置
            $redisConfig = Config::get("redis");
            //var_dump($redisConfig);
            self::$redis = new \Redis();
            $result = self::$redis->connect($redisConfig['host'], $redisConfig['port'], $redisConfig['time_out']);
        } catch (\Exception $e) {
            throw new \Exception("redis服务异常");
        }

        if ($result === false) {
            throw new \Exception("redis连接失败");
        }
    }

    /**
     * 魔术方法静态调用
     * @param $method_name // 调用的redis方法名
     * @param $param // 调用redis方法时传递的参数
     * @return mixed
     */
//    public function __call($method_name, $param)
//    {
//        if (!self::$redis) {
//            self::getInstance();
//        }
//        try {
//            return call_user_func_array([self::$redis, $method_name], $param);
//        } catch (\Exception $e) {
//            print $e->getMessage();
//            exit;
//        }
//    }

    //私有化克隆方法
    public function __clone()
    {
        // TODO: Implement __clone() method.
    }

    /**
     * 魔术方法调用redis中的方法
     * @param $method_name
     * @param $arguments
     * @return mixed
     */
    public function __call($method_name, $arguments)
    {
        return self::$redis->$method_name(...$arguments);
    }

}
  1. 通过哨兵动态获取redis的主从配置
use app\lib\redis\Redis as MyRedis;
class Index
{
    public function index()
    {

        $redis = MyRedis::getInstance();
        //获取redis master的状态信息
        $masterInfo = $redis->rawCommand('SENTINEL', 'masters');
        $master = $redis->rawCommand("SENTINEL", 'master', 'mymaster');

        //获取redis slaves的信息
        $slaves = $redis->rawCommand("SENTINEL", 'slaves', 'mymaster');
        dump($slaves);
    }
}
  1. 获取之后即可创建redis实例进行使用

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
阿里云nginx+thinkphp环境运行会直接下载php文件的问题。发布时间:2022-07-10
下一篇:
DES算法的Javascript、PHP及Perl的源代码发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap