Redis 集群部署

Redis 集群

Redis集群与单机相比较在功能上存在一些限制:

1、key批量操作支持有限。如mset、mget,目前只支持具有相同slot值的key执行批量操作。对于映射为不同slot值的key由于执行mget、mget等操作可能存在于多个节点上因此不被支持。
2、key事务操作支持有限。同理只支持多key在同一节点上的事务操作,当多个key分布在不同的节点上时无法使用事务功能。
3、key作为数据分区的最小粒度,因此不能将一个大的键值对象如hash、list等映射到不同的节点。
4、支持多数据库空间。单机下的Redis可以支持16个数据库,集群模式下只能使用一个数据库空间,即db0。
5、复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构。

集群环境搭建

源码安装Redis

安装 C编译器 以及一些常用依赖

yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

参考地址:
http://www.redis.net.cn/download/

http://redis.cn/commands.html#string

#$ wget http://download.redis.io/releases/redis-3.0.6.tar.gz
#$ tar xzf redis-3.0.6.tar.gz
#$ cd redis-3.0.6
#[root@zegoto redis-3.0.6]# make
#cd src

二进制文件是编译完成后在src目录下. 运行如下:

#$ src/redis-server
#$ src/redis-cli
#redis> set foo bar
#redis> get foo

安装到指定目录
如 /usr/local/rediscd

cd /usr/local/redis-3.0.0
make PREFIX=/usr/local/redis install

cp /usr/local/redis-3.0.0/redis.conf /usr/local/redis/bin

集群安装配置文件修改

修改配置文件【 redis-{port}.conf 】:

		
		bing 192.168.56.104 
        port 6379
        daemonize yes   #后台运行
        logfile log/6379.log
        cluster-enabled yes
        dir data
        cluster-node-timeout 15000
        cluster-config-file nodes-6379.conf

###依次启动
redis-server conf/redis-6379.conf &
redis-server conf/redis-6380.conf &
redis-server conf/redis-6381.conf &
redis-server conf/redis-6382.conf &
redis-server conf/redis-6383.conf &
redis-server conf/redis-6384.conf &

redis-trib.rb搭建集群

redis-trib.rb是采用Ruby实现的Redis集群管理工具。内部通过Cluster相关命令帮我们简化集群创建、检查、槽迁移和均衡等常见运维操作,使用之前需要安装Ruby依赖环境。
1、安装 ruby 环境

linux上安装

安装ruby环境
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz

tar xvf  ruby-2.3.1.tar.gz
./configure -prefix=/usr/local/bin/ruby-2.3.1
make
make install


cd /usr/local/ruby-2.3.1
sudo cp bin/ruby  /usr/local/bin
sudo cp bin/gem  /usr/local/bin


安装 rubygem redis依赖:
wget http://rubygems.org/downloads/redis-3.3.0.gem
gem install -l redis-3.3.0.gem



安装 redis-trib.rb:
sudo  cp  /{redis_home}/src/redis-trib.rb   /usr/local/bin

windows下安装 install Ruby on windows

1)	Ruby官网下载安装文件
2)	在http://curl.haxx.se/ca/cacert.pem下载证书,放在ruby安装目录下
3)	设置环境变量SSL_CERT_FILE,指向证书文件
4)	运行Start Command Prompt with Ruby
5)	输入gem install redis
6)	从redis3.2源码中的src文件夹下redis-trib.rb 复制到搭建的集群文件夹下
7)	运行redis-trib.rb

2、准备6个节点,同手动搭建方式一致

3、创建集群

redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

Redis 集群部署_第1张图片

eg :

redis-trib.rb create --replicas 1 192.168.56.104:6379 192.168.56.104:6380 192.168.56.104:6381 192.168.56.101:6382 192.168.56.101:6383 192.168.56.101:6384

Redis 集群部署_第2张图片

4、集群完整性检查

集群完整性指所有的槽都分配到存活的主节点上,只要16384个槽中有一个没有分配给节点则表示集群不完整。可以使用redis-trib.rb check命令检测之前创建的集群是否成功。

redis-trib.rb check
redis-trib.rb check 192.168.56.104:6379

Redis 集群部署_第3张图片

5、 重新分配
redis-trib相关命令:
加入节点:

redis-trib.rb add-node new_host:new_port existing_host:existing_port --slave–master-id

重新分配槽:

redis-trib.rb reshard host:port --from --to --slots --yes --timeout --pipeline

host:port:必传参数,集群内任意节点地址,用来获取整个集群信息。
–from:制定源节点的id,如果有多个源节点,使用逗号分隔,如果是all源节点变为集群内所有主节点,在迁移过程中提示用户输入。
–to:需要迁移的目标节点的id,目标节点只能填写一个,在迁移过程中提示用户输入。
–slots:需要迁移槽的总数量,在迁移过程中提示用户输入。
–yes:当打印出reshard执行计划时,是否需要用户输入yes确认后再执行reshard。
–timeout:控制每次migrate操作的超时时间,默认为60000毫秒。
–pipeline:控制每次批量迁移键的数量,默认为10

CLUSTER INFO 解释

Redis 集群部署_第4张图片
高版本可使用 redis-cli 分配集群槽 集群最少需要6个节点

redis-cli --cluster create 192.168.99.97:6379 192.168.99.97:6380 192.168.99.97:6381 192.168.99.96:6379 192.168.99.96:6380 192.168.99.96:6381 --cluster-replicas 1

redis-cli 集群模式连接

redis-cli -c -p 6379 -h 192.168.56.104

keys * 无法查看集群上所有的key
可以通过 get key 获取到值

redis安装请看

https://blog.csdn.net/qq2531246791/article/details/105268559

你可能感兴趣的:(java)