准备Redis读写分离面试,你都要知道什么(redis读写分离面试题)
Redis读写分离是指将Redis内存数据库的读 写逻辑分成两个部分,分别放在相同类型的不同机器上,实现负载均衡,提高整体性能。准备Redis读写分离面试必须要掌握:
一、Redis读写分离技术实现原理:
Redis读写分离技术靠分布式中间件,来实现读写分离。当客户端发起业务请求时,分布式中间件会发挥“代理”的作用,将请求转发到真正的Redis实例上。根据业务的不同,再将请求路由到读实例或写实例上。
二、Redis读写分离的优势:
(1)负载均衡:将读写请求拆分成不同的Redis实例上,可以有效减轻每个redis实例的读写压力,避免出现单实例崩溃的情况;
(2)高可用:当读实例发生故障时,中间件仍然可以从可用的读实例上获取数据,而不影响读请求服务;
(3)降低延迟:由于读写请求分布到不同的服务器上,使得读写压力减轻,可以较快的返回数据,从而大幅度降低读延迟;
三、Redis读写分离的实现方式:
(1)代理方式:通过代理工具(如Twemproxy)实现,将客户端的请求进行转发和负载分配,再根据客户端请求的KEY绑定节点,实现读写分离;
(2)Sentinel方式:Redis自带的Sentinel监控系统可以实现读写分离,Sentinel具有实现Redis的高可用,故障转移的功能,具有较高的可靠性;
(3)自编码方式:可以按照具体的业务场景手动实现读写分离,例如可以通过编写PHP代码实现请求的转发和负载分配,实现读写分离。
$config = array(
// 读服务器列表
‘READ_HOST’ => array(
‘127.0.0.1:3306’
),
// 写服务器列表
‘WRITE_HOST’ => array(
‘127.0.0.1:3306’
)
);
$read_hosts = $config[‘READ_HOST’];
$write_hosts = $config[‘WRITE_HOST’];
// 读取
$read_host = $read_hosts[mt_rand(0, count($read_hosts) -1)];
// 写入
$write_host = $write_hosts[mt_rand(0, count($write_hosts) -1)];
?>
四、总结:Redis读写分离是一种有利于实现高可用,降低延迟,提高并发性能的技术。准备Redis读写分离面试,要掌握Redis读写分离的实现原理和主要优势,知晓Redis读写分离的实现方式,以及理解相关代码实现。