版本:Redis server version 2.2.14

客户端:python-redis2.4.9

redis安装路径/usr/local/redis/
1.复制(http://redis.io/topics/replication)

cd /home/cc
cp /usr/local/redis/redis.conf redis_m.conf
cp /usr/local/redis/redis.conf redis_s.conf


  编辑redis_m.conf
  dbfilename dump_m.rdb
  port 6379
  编辑redis_s.conf
  dbfilename dump_s.rdb
  port 6380
  slaveof 127.0.0.1 6379
  注. redis每次启动的时候,都后从dbfilename里读取数据到内存中。
  启动redis服务,主服务器和从服务器
  redis-server redis_m.conf
  redis-server redis_s.conf
  客户端代码

#!/usr/bin/env python
#coding=utf-8
import redis
m = redis.Redis(host='127.0.0.1',port=6379,db=0)
s = redis.Redis(host='127.0.0.1',port=6380,db=0)
#往主服务器中插入10条记录
for i in range(10):
    m.set(str(i),str(i))

#查看从服务器中是否有有记录
for i in range(10):
    print s.get(str(i))


 2. 复制的特性
   1. 一台主服务器可以被多台从服务器连接
   2. master-salver可形成环状
   3. salver端是非阻塞
   4. 执行只读查询时可以使用多台从服务器,我觉得有些问题:

for i in range(100000):
    m.lpush('list',str(i))
m.sort('list',desc=True)


断掉slaver和没有断掉slaver花费的时间差不多的。不知道是不是我的想法有问题。
   5. save的过程可以放在slaver上运行。
对于复制的过程是:
主服务器开始后台保存,并且收集所有将对数据集进行修改的新指令。当后台保存操作完成时,主服务器会将保存在磁盘中的数据库文件同步至从服务器,并将数据加载到内存中。主服务器接着会发送给从服务器所有累计的指令,以及所有从客户端收集到的将对数据集进行修改的指令。这个过程将以一个与Redis自身协议相同格式的命令流执行。简单来是,就是把db文件同步过去,然后就是累计的修改指令。