RedisCluster搭建

Redis Cluster 搭建

一、安装redis

1
2
3
4
5
cd /usr/local/
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar -xvzf redis-3.2.3.tar.gz
cd /usr/local/redis-3.2.3
make

二、创建实例

1
2
3
4
5
cd /usr/local/redis-3.2.3/
mkdir cluster
cd cluster
mkdir data etc
vim etc/redis-7000.conf

redis 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
port 7000
dir /usr/local/redis-3.2.3/cluster/data/

# 集群配置
cluster-enabled yes
cluster-config-file /usr/local/redis-3.2.3/cluster/etc/nodes-7000.conf
cluster-node-timeout 5000

# aof持久化
appendonly yes
appendfilename appendonly-7000.aof

loglevel notice
logfile /var/log/redis-7003.log

bind 127.0.0.1
1
/usr/local/redis-3.2.3/src/redis-server /usr/local/redis-3.2.3/cluster/etc/redis-7000.conf &

三、安装 ruby & gem

redis-trib.rb 是一个ruby的脚本,需要gem安装redis扩展支持

1
2
3
4
5
6
7
wget https://ruby.taobao.org/mirrors/ruby/ruby-2.3.1.tar.gz
tar -xvzf ruby-2.3.1.tar.gz
cd /usr/local/ruby-2.3.1
./configure
make & make install

gem install redis

更换国内的gem源

1
2
3
4
5
6
7
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
$ gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
$ gem install redis

四、创建集群

1
/usr/local/redis-3.2.3/src/redis-trib.rb create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

redis-trib.rb 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Usage: redis-trib <command> <options> <arguments ...>

create host1:port1 ... hostN:portN
--replicas <arg>
check host:port
info host:port
fix host:port
--timeout <arg>
reshard host:port
--from <arg>
--to <arg>
--slots <arg>
--yes
--timeout <arg>
--pipeline <arg>
rebalance host:port
--weight <arg>
--auto-weights
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
--threshold <arg>
add-node new_host:new_port existing_host:existing_port
--slave
--master-id <arg>
del-node host:port node_id
set-timeout host:port milliseconds
call host:port command arg arg .. arg
import host:port
--from <arg>
--copy
--replace
help (show this help)

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

Redis Command

集群(cluster)

  • CLUSTER INFO 打印集群的信息
  • CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息

节点(node)

  • CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子
  • CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点
  • CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点
  • CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面

槽(slot)

  • CLUSTER ADDSLOTS <slot> [slot …] 将一个或多个槽(slot)指派(assign)给当前节点
  • CLUSTER DELSLOTS <slot> [slot …] 移除一个或多个槽对当前节点的指派
  • CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点
  • CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id
  • CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中
  • CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点
  • CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)

键 (key)

  • CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上
  • CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量
  • CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键
坚持原创技术分享,您的支持将鼓励我继续创作!