欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis maser-salve 博客分类: redis redis中间件master-slave读写分离 

程序员文章站 2024-02-14 09:34:04
...

一.序言

     现在只要中间件 分布式什么的都要涉及主从来提高读的性能,这里根据官网的说明介绍一些内容给大家,我就不全部翻译了,英文好了直接看原文吧。地址:http://redis.io/topics/replication

 

二.基本介绍

     1.redis 不仅支持master-slave  的复制,同时也支持slave-slave 的复制。

     2.如果master 的持久化关闭之后,在多slave 复制的时候,如果有重启之类的,会出现数据不一致的其概况。

 

三.基本配置

    1.配置很简单,我这里配置的单机的,用端口区分。先打开先前的配置

        
redis maser-salve
            
    
    博客分类: redis redis中间件master-slave读写分离 
 

   2.用命令复制一份redis.conf 做为slave 的配置文件

      

# 注意自己的文件位置 
# 这里如果简单,你可以不用配置文件,直接通过redis-server --port 10001 方式创建
$ cp redis.conf  redis-10001.conf

 

    3.更改redis-10001.conf 的端口

     

$ vi redis-10001.conf

# 将port 6379 改成 10001 

  

    4. 启动slave

   

$ redis-server /usr/local/etc/redis-10001.conf

     

   5.连接10001 端口,指定他为slave

     

$ redis-cli -p 10001
127.0.0.1:10001> PING
PONG
127.0.0.1:10001> slaveof localhost 6379
OK

     

四.测试

     分别打开master 和 slave的窗口,在master 存放,slave 获取

     master 执行

$ redis-cli -p 6379
127.0.0.1:6379> set testkey hello
OK

    slave 执行 

$ redis-cli -p 10001
127.0.0.1:10001> get testkey
"hello"

 

     结果:master 存放的值,slave 已经获取到了。当然,默认slave 是只读的,可以通过配置改变。

     更多配置

         

五.实现步骤

     1.设置或者启动slave 的时候,会发送SYCN命令,无论是第一次连接或者重新连接

      
redis maser-salve
            
    
    博客分类: redis redis中间件master-slave读写分离 
 

    2.msater 收到后,开始后台saving,然后缓存接收到的所有修改数据的命令。

    3.saving 完成之后,会将saving 的文件,传输给slave 

    4.slave 收到文件后,会清空以前的,并从新加载数据

    5.后面master 和slave 就是异步同步,比较时时了

    6.2.8 以后,slave断掉之后,会从连master,然后部分同步,时间可以设置

    部分同步原理:

    1.master那边会创建一个内存缓冲区,记录最近的命令

    2.每次复制master 和slave 都会有一个偏移量记录,和一个(master run id

    3.当连接断开,salve会从新请求连接,如果master run id 相同,并且偏移量位置可用,那么就会继续上次的进行复制,如果不同,这就类似于第一次连接,全量复制

 

    其他:全量复制,或者说第一次复制,如果数据过大,或导致slave 时间很长不可用。

 

小结:

       1.这里简单描述了下redis 读写分离的东西,但是这个虽然可以用性很高,但是有始终有一些遗漏 或者不同步的问题,遇坑的时候希望大家多分享~。~

       2.上面的master 是没加用户名和密码的,加了连接的时候需要注意加

       3.如果描述有错的地方,请指出,非常感谢!

   

  • redis maser-salve
            
    
    博客分类: redis redis中间件master-slave读写分离 
  • 大小: 70 KB