PHP中使用redis哨兵
Posted 水滴月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中使用redis哨兵相关的知识,希望对你有一定的参考价值。
- 封装一个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);
}
}
- 通过哨兵动态获取redis的主从配置
use applibredisRedis 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);
}
}
- 获取之后即可创建redis实例进行使用
以上是关于PHP中使用redis哨兵的主要内容,如果未能解决你的问题,请参考以下文章
Redis主从与哨兵架构详解 Redis主从架构 如何在同一台机器搭建主从架构 Redis主从工作原理 数据部分复制 Jedis使用 Redis的管道(Pipeline) Redis Lua脚本(代码