Redis的复制

来源:互联网 发布:mysql的配置 编辑:程序博客网 时间:2024/05/20 23:59
复制
 
    通过持久化,保证了即使重启服务也不会损失(或少量损失)数据。但是如果服务器的硬盘出现故障,也会导致数据丢失。为了避免这种情况发生,我们希望将数据库复制多个副本部署在不同的服务器上,即使有一台出现故障,也不会影响使用。这就要求当一台服务器上的数据库更新后,可以自动将更新数据同步到其他服务器上,Redis提供了复制功能可以实现这一过程。
  
   1.1 配置
      
        同步后的数据库分为两类,一类是主数据库(master),一类是从数据库(slave)。主数据库可以发生读写操作,当发生写操作时将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个数据库。
      在redis中使用复制功能很简单,只需要在从数据库的配置文件中加入“slaveof 主数据库ip 端口”即可,主数据库无需任何设置。

主库:

1111

从库:
2222

3333

可以看到6389端口的从数据库连接上了6379的主数据库

现在在master上set key value,然后在slave上get key 
4444

5555

在slave上取到了master上set的值,相信大家看到了在slave上set p "pp"报了error,这是因为redis默认配置是从数据库是只读的,不能进行更改操作。

1.2读写分离

    通过复制可以实现读写分离意提高服务器的负载能力,再常见的场景中,读的频率大于写,当单机的Redis无法应付大量的读请求时可以通过复制功能建立多个从数据库,主数据库只进行写操作,而从数据库负责读操作。在上边,本人复制了一个从数据库,多个也一样,别忘记修改端口号即可。

1.3从数据库持久化

   另一个相对耗时的是持久化操作,为了提高性能,可以复制多个从数据库,并在从数据库中启用持久化,同时在主库中禁用持久化。当从数据库崩溃时,重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用SLAVEOF NO ONE将从数据库提升成主数据库继续服务,并在原来的主数据库启动后使用SLAVEOF命令将其设成从数据库,即可将数据同步过来。

0 0
原创粉丝点击