PHP中使用redis哨兵


  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实例进行使用


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM