本文来自redis集群教程

reids集群介绍:

1.支持多个节点,通常3主3从,支持主节点宕机,从节点选举成为主节点继续服务,提供一定的高可用。

2.数据分片:没有使用一致性hash,采用哈希槽。
Redis 集群有16384个哈希槽,每个key通过
CRC16校验(确保客户端的数据传输到redis服务器,保证数据传输的正确性和完整性)
后对16384(2的10次方)取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:
节点 A 包含 0 到 5500号哈希槽.
节点 B 包含5501 到 11000 号哈希槽.
节点 C 包含11001 到 16384号哈希槽.

3.Redis 并不能保证数据的强一致性
原因是因为集群是用了异步复制. 写操作过程:
客户端向主节点B写入一条命令.
主节点B向客户端回复命令状态.
主节点将写操作复制给他得从节点 B1, B2 和 B3.不能确保主节点复制到从节点成功。

应用:一般用作缓解数据库的nosql缓存,因为数据读取在内存中,所以可以在要求高性能的场景下使用。而且在分布式环境中可以确保数据一致。

与memcache区别

Quick Start

下载并安装redis

1
2
3
4
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
tar -zxvf redis-3.0.4.tar.gz
cd redis-3.0.4
make

More info:没有make命令:yum -y install gcc automake autoconf libtool make

创建集群配置文件,因为这里是3主3从,所以有6个配置文件

1
2
3
4
5
6
7
8
9
10
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
cd 7000
vim redis.conf
port 7000(改成文件夹名称,不同端口)
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

More info: 每个文件夹下面都创建一个配置文件

运行redis

1
./redis-server 7000/redis.conf &(确保后台运行)

More info: redis-server在刚在安装完的redis-3.0.4下
,复制一份到cluster-test文件夹下
redis-server

success:success

安装ruby环境

More info: 因为集群命令行工具 redis-trib是用ruby写的,所以还要安装ruby环境。
然而安装ruby安装还要先安装rvm

Step

1.gem source –add ‘https://ruby.taobao.org/

gem source -l

因为源在国外,所以先添加个淘宝的源文档

2.安装rvm:curl -sSL https://get.rvm.io | bash -s stable

3.curl -sSL https://rvm.io/mpapis.asc | gpg2 –import -

4.curl -sSL https://get.rvm.io | bash -s stable

5.source /etc/profile.d/rvm.sh

6.rvm install 2.3

参考 rvm文档

运行了6个redis实例,分配成3主3从

redis分配节点成集群:

1
./redis-trib.rb 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:7005

More info:
redis-trib.rb 路径:redis-3.0.4/src/redis-trib.rb

敲黑板了,,这里不能写成127.0.0.1,要写成内网的ip,不然等会jedis就不通了,connect不上了!!!

测试成功

1
2
3
4
/redis-3.0.4/src/redis-cli -c -p 7000

set a b
get a

More info:可以看到获取key为a 的数据,重定向到了另一个节点去拿到了value b