关于做网站的总结,windows优化大师有必要安装吗,wordpress创建模板,阜阳市建设工程网站目录 一#xff1a;背景
二#xff1a;实现过程
三#xff1a;总结 一#xff1a;背景
在哨兵模式下#xff0c;真实的redis服务地址由一个固定ip转变为可以变化的ip,这样我们业务代码在连接redis的时候#xff0c;就需要判断哪个主redis服务地址#xff0c;哪个是从…目录 一背景
二实现过程
三总结 一背景
在哨兵模式下真实的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读写分离让我们的业务更加健壮和高可用。