一个master可以拥有多个slave,一个slave又可以拥有多个slave。如此下去,形成了强大的多级服务器集群架构。
master用写数据,经统计:网站的读写比率是10:1
通过主从分离可以实现读写分离
master和slave都是一个redis实例(redis服务)
查看主从关系 redis-cli -h your_ip -p your_port info Replication
或者:
当master中添加数据后,会自动备份到slave中,slave中read_only. 集群
为什么要有集群?
如果访问量过大(1000W),主服务肯定会挂掉,数据服务就挂掉了或者发生自然灾难。
大公司都有跟多服务器(华东地区,华南地区,华北地区,西北地区,西南地区等)
集群概念
集群式相互独立的,通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置用于提高可用性和可缩放性。
当请求到来首先负载均衡服务器处理,把请求转发到另外一台服务器上。
分类
软件层面
只有一台电脑,在这台电脑上启动了多个redis服务。
硬件层面
存在多台实体电脑,每台电脑上启动了一个或多个redis服务
机器一:
新建一个文件夹,建立7000.conf 7001.conf 7002.conf
启动三个服务
redis-server 7000.conf redis-server 7001.conf redis-server 7002.conf
机器二相同配置 (7003-7005)
创建集群
redis的安装包中包含了redis-trib.rb,用于创建集群。
接下来机器上进行操作
将指令复制,这样可以在任何目录下调用此命令。
sudo cp /usr/share/doc/redis-tools/examples /redis-trib.rb /usr/local/bin/
安装ruby环境,因为redis-trib.rb是ruby开发的
sudo apt-get install ruby
安装redis相关依赖
sudo gem install redis
运行如下指令创建集群
redis-trib.rb create --replicas 1 172.21.0.16:7000 172.21.0.16:7001 172.21.0.16:7002 172.21.0.16:7003 172.21.0.16:7004 172.21.0.16:7005
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数, 这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大 致均等的将哈希槽映射到不同的节点。
槽的分配:
数据验证
连接 redis,例如进入7002
redis-cli -h 172.21.0.16 -c -p 7002
添加数据自动跳转服务器。