概述
你会知道如何安装redis, ruby, rubygems
如何解决gem安装依赖慢甚至失败的问题
如何用gem安装redis
Reids集群搭建过程
cat /etc/*-release
CentOS Linux release 7.3.1611 (Core)wget http://download.redis.io/releases/redis-3.2.9.tar.gz
下载redis的源码包tar -xzvf redis-3.2.9.tar.gz
解压源码包cd redis-3.2.9 && make && make install
编译,然后安装redis-server -v
Redis server v=3.2.9 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=5eeb62d2aadbc6d5yum install -y ruby rubygems
安装ruby,gemgem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
修改RubyGems 镜像gem update --system
升级gemgem install reids
安装gem-redis依赖vim start.sh
启动脚本,内容如下:1
2
3
4
5
6
7
8##! /bin/bash
redis-server ./7000/redis.conf
redis-server ./7001/redis.conf
redis-server ./7002/redis.conf
redis-server ./7003/redis.conf
redis-server ./7004/redis.conf
redis-server ./7005/redis.confvim ./700x/redis.conf
修改reids配置文件,修改的内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# 端口
port 7000
# 后台运行
daemonize yes
# pid文件路径
pidfile /var/run/redis_7000.pid
# log文件路径
logfile "nodes-7000.log"
# dbfilename
dbfilename dump-7000.rdb
# db文件路径
dir /usr/local/share/applications/redis/dbs
# 开启AOF
appendonly yes
# 配置AOF文件名
appendfilename "appendonly-7000.aof"
# 开启集群模式
cluster-enabled yes
# 集群配置文件
cluster-config-file nodes-7000.conf
# 集群间节点通信超时
cluster-node-timeout 5000chmod +x start.sh
使shell脚本可以运行./start.sh
运行start.sh脚本,启动redis实例ps -ef | grep redis | grep -v grep
查看redis实例运行情况cp ./redis-3.2.9/src/redis-trib.rb /usr/local/bin/
将redis-trib.rb复制到PATH路径上,可以在终端任何位置都可以执行redis-trib命令vim cluster.sh
集群创建脚本,内容如下:1
2
3
redis-trib create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005chmod +x cluster.sh
使shell脚本可以运行./cluster.sh
运行cluster.sh脚本,创建redis集群redis-trib check 127.0.0.1:7000
查看集群状态,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 0cd3b76dee6ccc78cfe37421386a55c752ef60a5 127.0.0.1:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 83e2fefef3c4ed18be37f406d8b28ec3ac6ad14f 127.0.0.1:7004
slots: (0 slots) slave
replicates 85903c099043fd29bb70d1b7212358d7e1317e06
S: d7191c35b23f9ab381e1a26443ef19c0ccf4fed7 127.0.0.1:7003
slots: (0 slots) slave
replicates 0cd3b76dee6ccc78cfe37421386a55c752ef60a5
M: e9df2796f7aaf6ccb8f1c0737b9a23cd0d1ccddf 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
M: 85903c099043fd29bb70d1b7212358d7e1317e06 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: c134c73ec11db000bce895df5c133e283969a6d4 127.0.0.1:7005
slots: (0 slots) slave
replicates e9df2796f7aaf6ccb8f1c0737b9a23cd0d1ccddf
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Redis客户端的使用
redis-cli
直接在终端输入redis-cli默认连接的是127.0.0.1:6379,如果在本地6379端口没有启动redis实例,将会报错1
2
3
4[root@tuyu redis]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
redis-cli -p 7000
前提:
本地在7000-7005端口分别启了一个redis实例,并将这些redis实例组成了一个redis集群
连接本地7000端口的redis实例1
2[root@tuyu redis]# redis-cli -p 7000
127.0.0.1:7000>
以集群的方式连接redis服务器redis-cli -c -h 127.0.0.1 -p 7001
redis服务器的模式有三种
- 主从模式
- 哨兵模式
- 集群模式
主从模式,常见的有一主一从,一主多从
主从模式的好处是:数据备份,读写分离,解决了流量瓶颈问题
主从模式的缺点是:不能解决故障迁移问题
哨兵模式,在主从模式的基础上,额外起技术哥哨兵进程,让哨兵进程监视主节点,当主节点宕机后,通过投票机制选举一个从节点替代宕机的主节点,并让其他的从节点作为新的主节点的从节点
哨兵模式的好处是:解决了主从模式没有解决的故障自动迁移的问题
哨兵模式的缺点是:从节点下线了,不会对其进行故障迁移的
集群模式,将key映射到16384个hash槽里,集群中每个节点都分配部分hash槽,当客户端连接集群中的某个节点,并执行操作时,通过一致的hash算法,计算书key所对应的hash并对16384取模,再用得到的结果去映射到具体的集群节点,如果不是当前节点,操作将被重定向到具体的节点,redis集群是去中心化的,所有节点都是平等的,集群间通信使用goossip协议,为解决集群中某个节点下线后,对应的hash槽不可用的情况,可以为集群中的所有节点都设置一至多个从节点,当主节点下线后,从节点替代主节点
集群模式的好处是:解决了单机内存限制,解决了流量瓶颈问题
集群模式的缺点是:当某个节点与它的所有从节点都下线后,它所处理的hash槽都不可用了,需要人工介入,从新分配hash槽