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

Redis主从复制

程序员文章站 2022-06-05 15:35:05
...

         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
数据操作API可以参考官方网站,这里不介绍。