master和slave都是一个redis实例(redis服务)
node
安装 sudo apt-get install redis-server 卸载 sudo apt-get purge --auto-remove redis-server 启动 sudo service redis-server start 中止 sudo service redis-server stop
## master ## #1. 修改 master配置 vim /etc/redis/redis.conf #2.修改bind为本机ip bind your_ip ## slave配置 ## #1.复制redis.conf 名为slave.conf cp redis.conf slave.conf # 2.修改配置 修改bind为本机ip bind your_ip #3.更改端口 例如 port 6378 #4. 更改slaveof slaveof your_ip 6379 redis-server /etc/redis/slave.conf
查看主从关系 redis-cli -h your_ip -p your_port info Replication
或者:
当master中添加数据后,会自动备份到slave中,slave中read_only.python
为何要有集群?
redis
集群概念
算法
当请求到来首先负载均衡服务器处理,把请求转发到另一台服务器上。vim
分类
ruby
软件层面
只有一台电脑,在这台电脑上启动了多个redis服务。bash
硬件层面
存在多台实体电脑,每台电脑上启动了一个或多个redis服务服务器
机器一:
新建一个文件夹,创建7000.conf 7001.conf 7002.conf网络
port 7000 #(7000-7002) bind 172.21.0.16 #做为守护进程运行 daemonize yes pidfile 7000.pid #(7000-7002) cluster-enabled yes cluster-config-file 7000_node.conf #(7000-7002) #链接集群的超时时间 cluster-node-timeout 15000 appendonly yes
启动三个服务
redis-server 7000.conf
redis-server 7001.conf
redis-server 7002.conf
机器二相同配置
(7003-7005)架构
建立集群
将指令复制,这样能够在任何目录下调用此命令。
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
添加数据自动跳转服务器。