redis 单服务器多端口集群

学习  (前提已经安装过redis)

首先准备集群工具

复制

cd   /usr/java

cp redis-3.2.9/src/redis-trib.rb /usr/local/bin

准备建六个文件夹用于启动redis 的节点服务

mkdir  redis_crowd

cd  redis_crowd

mkdir 7001 7002 7003 7004 7005 7006

复制6份配置文件到各自的文件夹

cd /usr/java

cp redis-3.2.9/redis.conf redis_cluster/7001/

cp redis-3.2.9/redis.conf redis_cluster/7002/

cp redis-3.2.9/redis.conf redis_cluster/7003/

cp redis-3.2.9/redis.conf redis_cluster/7004/

cp redis-3.2.9/redis.conf redis_cluster/7005/

cp redis-3.2.9/redis.conf redis_cluster/7006/

修改配置文件  

以7001文件的配置文件为例

port 7001  //六个节点配置文件分别是7001-7006

daemonize yes        //redis后台运行

pidfile /var/run/redis_7001.pid   //pidfile文件对应7001-7006

cluster-enabled yes   //开启集群

cluster-config-file nodes_7001.conf  //保存节点配置,自动创建,自动更新对应7001-7006

cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机

appendonly yes   //存储方式,aof,将写操作记录保存到日志中

启动节点服务(以第一个节点为例)

/usr/local/redis/bin/redis-server redis_cluster/7001/redis.conf 

查看redis启动情况

ps -ef | grep -i redis

但是在使用之前 需要安装ruby,以及redis和ruby连接

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

之后报错了

Fetching: redis-4.1.0.gem (100%)
ERROR:  Error installing redis:
        redis requires Ruby version >= 2.2.2.

查了资料总之是ruby的版本太低了

通过安装rvm升级ruby

1、安装RVM(官网  http://rvm.io/    http://rvm.io/rvm/install

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
\curl -sSL https://get.rvm.io | bash -s stable --rails
find / -name rvm -print
source /usr/local/rvm/scripts/rvm

 

2、查看rvm库中已知的ruby版本:

rvm list known

3、安装一个ruby版本:

rvm install 2.5.3

4、使用一个ruby版本:
rvm use 2.5.3

5、设置默认版本:(设置ruby2.5.3为默认的ruby)

rvm use 2.5.3 --default

6、卸载一个已知版本:

 rvm remove 2.3.4

7、查看ruby版本:

 ruby --version

8、安装redis:

 gem install redis

问题解决

创建集群

redis-trib.rb create --replicas 1  127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003
127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

集群数据测试

我们先连接任意一个节点,然后添加一个key:

redis-cli是redis默认的客户端工具,启动时加上`-c`参数,`-p`指定端口,就可以连接到集群。 

连接任意一个节点端口:

 /usr/local/redis/bin/redis-cli -c -p 7002

127.0.0.1:7002> 

我们连接7002

127.0.0.1:7002> set xxx  'fdafda'

-> Redirected to slot [4038] located at 127.0.0.1:7001

OK

前面说过Redis Cluster值分配规则,所以分配key的时候,它会使用CRC16(‘my_name’)%16384算法,来计算,将这个key 放到哪个节点,这里分配到了4038slot 就分配到了7001(0-5460)这个节点上。所以有:

Redirected to slot [4038] located at 127.0.0.1:7001

 

我们从其他集群节点 ,都可以获取到数据

127.0.0.1:7001> exit

[root@localhost ~]# /usr/local/redis/bin/redis-cli -c -p 7005

127.0.0.1:7005> get xxx

-> Redirected to slot [4038] located at 127.0.0.1:7001

"fdafda"

127.0.0.1:7001> 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值