配置 redis 主从复制一例
时间:2014-09-08 21:47 来源:linux.it.net.cn 作者:it
本文介绍redis主从复制的安装与配置,并对配置文件做了比较详细的注释,初学者可以参考学习下。
设置好redis的slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。
redis主从复制的特点
1.master可以有多个slave
2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构
3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。
4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余
5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。
Redis的主从复制的配置很简洁,而且支持多级Master/Slave,比如B是A的slave,C是B的Slave。
下面以单台机器为例说明。
Master/Slave配置
一个Redis服务实例需要一个配置文件,因此启动slave,只需要复制master的配置文件,然后做少量修改即可。假设master监听1010端口,slave监听2020端口,假设复制好的slave的配置文件名为slave.conf。
修改slave.conf以下两项的值
port 2020
dbfilename slave.rdb
在slave.conf加入
slaveof 127.0.0.1 1010 (这个表示,他是127.0.0.1 1010的slave服务)
启动master和slave,然后写入数据到master,读取slave,可以看到数据被复制到slave了。
用途:数据备份,读写分离等等
Redis 性能( 摘自官方测试描述 )
在 50 个并发的情况下请求 10w 次,写的速度是 110000
次/s,读的速度是 81000 次/s
测试环境:
1. 50 个并发,请求 100000 次
2. 读和写大小为 256bytes 的字符串
3. Linux2.6 Xeon X3320 2.5GHz 的服务器上
4. 通过本机的 loopback interface 接口上执行
Redis介绍
redis是一个key/value内存数据库,数据可以异步复制到磁盘,性能非常高,都知道memcached的性能很好,redis的读写能力不逊于memcached,甚至还要强。除此外,redis具有memcached的很多没有的强大特性。memcached数据无法持久化,全部是纯内存模式,不支持主从复制,数据的操作接口很有限。相同的是,两者的负载均衡策略都一样,客户端基于一致性哈希选择服务器。redis的支持的数据类型和数据操作很丰富,他的值可以是 string(字符串)、list(列表)、sets(集合)或者是 ordered sets(被排序的集合),所有的数据类型都具有 push/pop、add/remove、执行服务端的并集、交集、两个 sets 集中的差别等等操作,这些操作都是具有原子性的,Redis 还支持各种不同的排序能力。
Redis 安装及配置
下载 Redis:wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz
james@james-desktop: ~/src]$ tar xvzf redis-2.0.0-rc4.tar.gz
james@james-desktop: ~/src]$ cd redis-2.0.0-rc4
james@james-desktop: ~/src/redis-2.0.0-rc4]$ make
james@james-desktop: ~/src/redis-2.0.0-rc4]$ mkdir ~/redis-2.0.0
james@james-desktop: ~/src/redis-2.0.0-rc4]$cp redis-server ~/redis-2.0.0
james@james-desktop: ~/src/redis-2.0.0-rc4]$cp redis-benchmark ~/redis-2.0.0
james@james-desktop: ~/src/redis-2.0.0-rc4]$cp redis-cli ~/redis-2.0.0
james@james-desktop: ~/src/redis-2.0.0-rc4]$cp redis.conf ~/redis-2.0.0
james@james-desktop: ~/src/redis-2.0.0-rc4]$ cd ~/redis-2.0.0/
配置 redis.conf 配置文件:
复制代码代码如下:
#是否作为守护进程运行
daemonize yes
#配置 pid 的存放路径及文件名,默认为当前路径下
pidfile redis.pid
#Redis 默认监听端口
port 6379
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile stdout
#设置数据库的数量,默认连接的数据库是 0,可以通过 select N 来连接不同的数据库
databases 16
#保存数据到 disk 的策略
#当有一条 Keys 数据被改变是,900 秒刷新到 disk 一次
save 900 1
#当有 10 条 Keys 数据被改变时,300 秒刷新到 disk 一次
save 300 10
#当有 1w 条 keys 数据被改变时,60 秒刷新到 disk 一次
save 60 10000
#当 dump .rdb 数据库的时候是否压缩数据对象
rdbcompression yes
#dump 数据库的数据保存的文件名
dbfilename dump.rdb
#Redis 的工作目录
dir /home/falcon/redis-2.0.0/
########### Replication #####################
#Redis 的复制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# 刷新日志到 disk 的规则
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启 VM 功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置 Hash 表
activerehashing yes
启动 Redis
james@james-desktop: ~/redis-2.0.0$ ./redis-server redis.conf
(责任编辑:IT)
本文介绍redis主从复制的安装与配置,并对配置文件做了比较详细的注释,初学者可以参考学习下。 设置好redis的slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。
redis主从复制的特点
Redis的主从复制的配置很简洁,而且支持多级Master/Slave,比如B是A的slave,C是B的Slave。 Master/Slave配置
一个Redis服务实例需要一个配置文件,因此启动slave,只需要复制master的配置文件,然后做少量修改即可。假设master监听1010端口,slave监听2020端口,假设复制好的slave的配置文件名为slave.conf。 Redis 性能( 摘自官方测试描述 )
在 50 个并发的情况下请求 10w 次,写的速度是 110000 Redis介绍 redis是一个key/value内存数据库,数据可以异步复制到磁盘,性能非常高,都知道memcached的性能很好,redis的读写能力不逊于memcached,甚至还要强。除此外,redis具有memcached的很多没有的强大特性。memcached数据无法持久化,全部是纯内存模式,不支持主从复制,数据的操作接口很有限。相同的是,两者的负载均衡策略都一样,客户端基于一致性哈希选择服务器。redis的支持的数据类型和数据操作很丰富,他的值可以是 string(字符串)、list(列表)、sets(集合)或者是 ordered sets(被排序的集合),所有的数据类型都具有 push/pop、add/remove、执行服务端的并集、交集、两个 sets 集中的差别等等操作,这些操作都是具有原子性的,Redis 还支持各种不同的排序能力。 Redis 安装及配置
下载 Redis:wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz 配置 redis.conf 配置文件:
复制代码代码如下:
#是否作为守护进程运行
#配置 pid 的存放路径及文件名,默认为当前路径下
#Redis 默认监听端口
#客户端闲置多少秒后,断开连接
#日志显示级别
#指定日志输出的文件名,也可指定到标准输出端口
#设置数据库的数量,默认连接的数据库是 0,可以通过 select N 来连接不同的数据库
#保存数据到 disk 的策略
#当有 10 条 Keys 数据被改变时,300 秒刷新到 disk 一次
#当有 1w 条 keys 数据被改变时,60 秒刷新到 disk 一次
#当 dump .rdb 数据库的时候是否压缩数据对象
#dump 数据库的数据保存的文件名
#Redis 的工作目录
########### Replication #####################
############## SECURITY ###########
############### LIMITS ##############
########## APPEND ONLY MODE #########
################ VIRTUAL MEMORY ###########
############# ADVANCED CONFIG ###############
启动 Redis |