redis3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis3相关的知识,希望对你有一定的参考价值。
前言:
参考文档
Redis官方集群指南:Redis cluster tutorial a“ Redis
Redis官方集群规范:Redis Cluster Specification a“ Redis
Redis集群指南(中文翻译,紧供参考):集群教程 — Redis 命令参考
Redis集群规范(中文翻译,紧供参考):Redis 集群规范
1、安装步骤
1、依赖包
yum install -y gcc tcl
2、安装
cd /usr/local/
cp /tmp/redis-3.2.9.tar.gz .
tar -zxvf redis-3.2.9.tar.gz
make && make install
mkdir -p /data/service/redis/redis_cluster/
cd /data/service/redis/redis_cluster/
mkdir -p 7111 7112 7113 7114 7115 7116
mkdir /data/service/redis/redis_cluster/7111/log/
mkdir /data/service/redis/redis_cluster/dumps
3、修改配置文件,将配置文件拷贝到每个目录。
port 7111
pidfile "/data/service/redis/redis_cluster/7111/redis_7111.pid"
loglevel verbose
logfile "/data/service/redis/redis_cluster/log/redis_7111.log"
daemonize yes
databases 16
timeout 0
#客户端连接超时时间,0表示关闭
tcp-backlog 511
#确定tcp连接中已完成队列的长度。
tcp-keepalive 60
#检测客户端健康状态的时间,建议60s,单位是s。
#maxmemory 8gb
#使用内存最大值,多余的使用swap
cluster-enabled yes
cluster-config-file "/data/service/redis/redis_cluster/7111/nodes.conf"
cluster-node-timeout 5000
dir "/data/service/redis/redis_cluster/dumps"
appendonly yes
#aof重写
appendfilename "7111.aof"
appendfsync everysec
#每秒写入一次,最优。
no-appendfsync-on-rewrite no
#在在aof-rewrite期间,不暂缓appendfsync文件同步。
auto-aof-rewrite-percentage 100
#当前写入日志文件的大小超过上一次rewrite之后的文件大小的百分之100时就是2倍时触发Rewrite
auto-aof-rewrite-min-size 512mb
#当aof大于512m 才写入硬盘。
#aof-rewrite-incremental-fsyn yes
#aof rewrite 过程,默认文件是增量同步策略。
lua-time-limit 5000
#一个Lua脚本最长的执行时间,单位为毫秒,默认是5000
#notify-keyspace-events ""
#按键通知事件,默认关闭
bind 10.32.5.63
protected-mode no
masterauth "$1$9a$A3v2uy9"
requirepass "$1$9a$A3v2uy9"
cluster-migration-barrier 1
slowlog-log-slower-than 10000
slowlog-max-len 128
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
4、创建集群
yum -y install ruby
yum install ruby rubygems
gem install redis
修改密码文件
/usr/lib/ruby/gems/1.8/gems/redis-3.3.3/lib/redis/client.rb
# :password => nil,
:password => ‘$1$9a$A3v2uy9‘,
cd /usr/local/redis/src
./redis-trib.rb create --replicas 1 10.32.5.63:7111 10.32.5.63:7112 10.32.5.63:7113 10.32.5.63:7114 10.32.5.63:7115 10.32.5.63:7116 10.32.5.63:7117 10.32.5.63:7118 10.32.5.63:7119 10.32.5.64:7121 10.32.5.64:7122 10.32.5.64:7123 10.32.5.64:7124 10.32.5.64:7125 10.32.5.64:7126 10.32.5.64:7127 10.32.5.64:7128 10.32.5.64:7129
5、创建启动脚本
6、登录
redis-cli -c -h 10.32.5.63 -p 7111 -a ‘$1$9a$A3v2uy9‘
7、集群客户端
10.32.5.64:7124> GET foo
"bar"
10.32.5.64:7122>
[[email protected] ~]# redis-cli -c -h 10.32.5.63 -p 7111 -a ‘$1$9a$A3v2uy9‘
10.32.5.63:7111> get foo
-> Redirected to slot [12182] located at 10.32.5.64:7124
"bar"
8、重新划分100个槽位,到本节点。
./redis-trib.rb reshard 10.32.5.63:7111
9、计数器
计数器的值只能增加,不能减少。
10、故障转移测试。
1、查看主节点
[[email protected] src]# redis-cli -h 10.32.5.63 -p 7111 -a ‘$1$9a$A3v2uy9‘ cluster nodes |grep master
9a731c78db51c7d9af039c9e1b8240b2bc6174d5 10.32.5.63:7111 myself,master - 0 0 1 connected 1820-3640
16cd1198a3317d32682e0b17edcd842bc61306ef 10.32.5.63:7112 master - 0 1499051510616 2 connected 5461-7281
de651d85822eb2caaa0054b72bb765e950ec66d9 10.32.5.64:7121 master - 0 1499051511617 10 connected 0-1819
ef2d23168a9e4856ef94e19074fa55f239b880ad 10.32.5.64:7123 master - 0 1499051511718 12 connected 7282-9101
851818450b44a179fa25a0ed0667de5f0e618cd3 10.32.5.63:7113 master - 0 1499051511717 3 connected 9102-10922
7b226249af22cfa67bfb15e676c8934e6e4c691d 10.32.5.64:7124 master - 0 1499051511718 13 connected 10923-12742
166116e0e76a2699d4471319306dfc99e246f760 10.32.5.64:7125 master - 0 1499051510115 14 connected 14564-16383
a83ec82fd0e3053e0882337a72c7affb70563d8a 10.32.5.63:7114 master - 0 1499051511117 4 connected 12743-14563
4c402d2324a94228d3cd63235c0acd4ba3547d03 10.32.5.64:7122 master - 0 1499051510617 11 connected 3641-5460
2、关闭一个主节点
[[email protected] src]# redis-cli -c -h 10.32.5.63 -p 7112 -a ‘$1$9a$A3v2uy9‘ debug segfault
Error: Server closed the connection
3、检查主节点
[[email protected] src]# redis-cli -h 10.32.5.63 -p 7111 -a ‘$1$9a$A3v2uy9‘ cluster nodes |grep master
9a731c78db51c7d9af039c9e1b8240b2bc6174d5 10.32.5.63:7111 myself,master - 0 0 1 connected 1820-3640
53494b5e18c726b8f75001c069940e740c6dcb6d 10.32.5.64:7127 master - 0 1499051716944 19 connected 5461-7281
16cd1198a3317d32682e0b17edcd842bc61306ef 10.32.5.63:7112 master,fail - 1499051659552 1499051657348 2 disconnected
de651d85822eb2caaa0054b72bb765e950ec66d9 10.32.5.64:7121 master - 0 1499051717946 10 connected 0-1819
ef2d23168a9e4856ef94e19074fa55f239b880ad 10.32.5.64:7123 master - 0 1499051718446 12 connected 7282-9101
851818450b44a179fa25a0ed0667de5f0e618cd3 10.32.5.63:7113 master - 0 1499051718446 3 connected 9102-10922
7b226249af22cfa67bfb15e676c8934e6e4c691d 10.32.5.64:7124 master - 0 1499051718948 13 connected 10923-12742
166116e0e76a2699d4471319306dfc99e246f760 10.32.5.64:7125 master - 0 1499051718948 14 connected 14564-16383
a83ec82fd0e3053e0882337a72c7affb70563d8a 10.32.5.63:7114 master - 0 1499051717445 4 connected 12743-14563
4c402d2324a94228d3cd63235c0acd4ba3547d03 10.32.5.64:7122 master - 0 1499051718948 11 connected 3641-5460
[[email protected] src]#
从节点升级为主节点。启动7112,发现7112变成从节点。
[[email protected] src]# redis-cli -h 10.32.5.63 -p 7111 -a ‘$1$9a$A3v2uy9‘ cluster nodes
53494b5e18c726b8f75001c069940e740c6dcb6d 10.32.5.64:7127 master - 0 1499052056521 19 connected 5461-7281
53494b5e18c726b8f75001c069940e740c6dcb6d 0 1499052058824 19 connected
cluster nodes
命令的输出有点儿复杂, 它的每一行都是由以下信息组成的:
节点 ID :例如
3fc783611028b1707fd65345e763befb36454d73
。ip:port
:节点的 IP 地址和端口号, 例如127.0.0.1:7000
, 其中:0
表示的是客户端当前连接的 IP 地址和端口号。flags
:节点的角色(例如master
、slave
、myself
)以及状态(例如fail
,等等)。如果节点是一个从节点的话, 那么跟在
flags
之后的将是主节点的节点 ID : 例如127.0.0.1:7002
的主节点的节点 ID 就是3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e
。集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。
节点最近一次返回
PiNG
回复的时间。节点的配置纪元(configuration epoch):详细信息请参考 Redis 集群规范 。
本节点的网络连接情况:例如
connected
。节点目前包含的槽:例如
127.0.0.1:7001
目前包含号码为5960
至10921
的哈希槽。
11、添加节点到集群
1、配置启动新节点
2、添加主节点
/redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7111
3、添加作为从节点,作为随机的从节点。
./redis-trib.rb add-node --slave 127.0.0.1:7006 127.0.0.1:7000
4、指定做为从节点
./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000
5、新添加节点为空主机,使用replicate复制到副本中。如果丐姐蒂娜是从属节点,但是要将其作为不通的主节点的副本移动。此功能也起作用。
添加从节点:
redis 127.0.0.1:7006> cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e
redis-cli -p 7000 cluster nodes | grep slave | grep 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e f093c80dde814da99c5cf72a7dd01590792b783b 127.0.0.1:7006 slave 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 0 1385543617702 3 connected 2938205e12de373867bf38f1ca29d31d0ddb3e46 127.0.0.1:7002 slave 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 0 1385543617198 3 connected
12、删除节点:
1、删除从节点 ./redis-trib del-node 127.0.0.1:7000 `<node-id>`
2、删除主节点
1、减少主节点数量,先把主节点变成为空节点
2、删除主节点的另一种方法是在其从站之一上执行手动故障切换,并在将节点变为新主节点的从属节点后将其删除
13、副本迁移。
CLUSTER REPLICATE <master-node-id>
14、升级Redis群集中的节点
15、迁移到Redis群集
本文出自 “itboy的博客园” 博客,转载请与作者联系!
以上是关于redis3的主要内容,如果未能解决你的问题,请参考以下文章