Redis的Replication(复制)

Posted ecollab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的Replication(复制)相关的知识,希望对你有一定的参考价值。

文件并发(日志处理)--队列--Redis+Log4Net

分布式中使用Redis实现Session共享(二)

http://www.cnblogs.com/stephen-liu74/archive/2012/02/23/2364717.html

读写分离

配置文件为redis.conf文件

如何配置Replication:


    
见如下步骤:
    1). 同时启动两个Redis服务器,可以考虑在同一台机器上启动两个Redis服务器,分别监听不同的端口,如6379和6380。
    2). 在Slave服务器上执行一下命令:
    /> redis-cli -p 6380   #这里我们假设Slave的端口号是6380
    redis 127.0.0.1:6380> slaveof 127.0.0.1 6379 #我们假设Master和Slave在同一台主机,Master的端口为6379
    OK
    上面的方式只是保证了在执行slaveof命令之后,redis_6380成为了redis_6379的slave,一旦服务(redis_6380)重新启动之后,他们之间的复制关系将终止。
    如果希望长期保证这两个服务器之间的Replication关系,可以在redis_6380的配置文件中做如下修改:
    /> cd /etc/redis  #切换Redis服务器配置文件所在的目录。
    /> ls
    6379.conf  6380.conf
    /> vi 6380.conf
    将
    # slaveof <masterip> <masterport>
    改为
    slaveof 127.0.0.1 6379
    保存退出。
    这样就可以保证Redis_6380服务程序在每次启动后都会主动建立与Redis_6379的Replication连接了。

 

配置好后可以写读操作

public ActionResult TestWrite()//主服务

{

  var client = new Redisclient("127.0.01","6379");

  client.Set<int>("pwd8800",1111);

  return content("ok");

}

public ActionResult TestRead()//子服务

{

  var client = new Redisclient("127.0.01","6379");

  int pwd = client.Get<int>("pwd8800");

  return content(pwd.ToString());

}

Save 900 1 含义为900秒后有一个KEY发生变化就执行一次保存

修改appendonly配置可以启动aof模式,改为yes 后就启动aof模式,实时保存数据,但影响性能

 

appendfsync no/always/everysec  always表示每接一个命令写一次,性能最差; no操作系统同步到磁盘,持久化没有保证,性能最好;  everysec  每秒同步一次,性能折中。首先要启用aof模式。

 

aof文件的增长速度比较快,所以

从2.4版本后增加了bgrewriteaof功能,在负载不高的情况下,重写aof文件

提高性能可以:

主服务关闭save功能;

从服务器开启aof功能,并开启bgrewriteaof功能,不对外提供服务

 

如果同时配置了RDB(快照)、aof,恢复数据时只加载aof

如果只配置了RDB快照,恢复时将加载dump文件恢复

以上是关于Redis的Replication(复制)的主要内容,如果未能解决你的问题,请参考以下文章

redis集群之主从架构

Redis的Replication(复制)

Redis主从复制-Replication

redis 系列22 复制Replication (下)

Redis命令参考之复制(Replication)

MySQL Replication 即主从复制