网站可以做匿名聊天吗黑帽seo怎么做网站排名
目录
一:背景
二:实现过程
三:总结
一:背景
在哨兵模式下,真实的redis服务地址由一个固定ip转变为可以变化的ip,这样我们业务代码在连接redis的时候,就需要判断哪个主redis服务地址,哪个是从redis服务地址,从而进行对应的读写操作。那么如何实现呢,下面我们使用php语言来具体讲解下,如果实现这个redis操作。
二:实现过程
1:首先获取哨兵的服务地址,根据哨兵获取主,从redis的地址信息
获取主,从库地址:
#哨兵服务的地址
$sentinels = [['host' => '192.168.56.101', 'port' => 5000],['host' => '192.168.56.101', 'port' => 5001],['host' => '192.168.56.101', 'port' => 5002], ];$masterName = 'mymaster'; $masterInfo = $slaveInfo = [];
#循环哨兵地址,连接获取主从服务的地址
foreach ($sentinels as $sentinel) {$redis = new \Redis();try {$redis->connect($sentinel['host'], $sentinel['port']);$masterInfo = $redis->rawCommand('sentinel', 'get-master-addr-by-name', $masterName);$redis->close();if ($masterInfo) {$slaves = $redis->rawCommand('sentinel','slaves',$masterName);if (!empty($slaves)) {foreach ($slaves as $val){$slaveInfo[]=['ip'=>$val[3],'port'=>$val[5]];}}break;}} catch (\Exception $e) {continue;}
}
if (!$masterInfo) {echo 'Redis 连接失败!';exit;
}
#这里获取的主服务地址只有一个
#从服务地址是一个数组列表$rand = rand(0,1);
$slaveInfo = $slaveInfo[$rand];
#上面我们随机选择一个从地址
2:根据主从地址,进行读写操作
#链接主库,进行写操作
$masterRedis = new \Redis();
$masterRedis->connect($masterInfo[0], $masterInfo[1]);
$masterRedis->auth('123456');
if (!$masterRedis->set('test', '123')) {echo 'Redis 写入失败!';exit;
}
echo 'Redis 写入成功!' . "\n";#连接从服务,获取信息
$salveRedis = new \Redis();
$salveRedis->connect($slaveInfo['ip'], $slaveInfo['port']);
$salveRedis->auth('123456');
if (!$salveRedis->exists('test')) {echo 'Redis 读取失败!';exit;
}
echo 'Redis 读取成功!' . $salveRedis->get('test');
三:总结
通过以上代码,我们可以根据自己的业务进行封装,获取主库进行写操作,获取从库进行读操作,可以实现哨兵模式下,redis读写分离,让我们的业务更加健壮和高可用。

