redis集群搭建
本文来自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 | wget http://download.redis.io/releases/redis-3.0.4.tar.gz |
More info:没有make命令:yum -y install gcc automake autoconf libtool make
创建集群配置文件,因为这里是3主3从,所以有6个配置文件
1 | mkdir cluster-test |
More info: 每个文件夹下面都创建一个配置文件
运行redis
1 | ./redis-server 7000/redis.conf &(确保后台运行) |
More info: redis-server在刚在安装完的redis-3.0.4下
,复制一份到cluster-test文件夹下
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 | /redis-3.0.4/src/redis-cli -c -p 7000 |
More info:可以看到获取key为a 的数据,重定向到了另一个节点去拿到了value b