高性能缓存---Redis进阶
Redis Standalone
1:官方站点: https://redis.io下载最新版或者最新stable版
2:解压源码并进入目录
3: 直接make
4:安装到指定的目录, make PREFIX=/usr/local/redis install
5:启动 redis-server
Redis 主从复制
主从复制Replication
1. 一个redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他复制品称为Slaves
2. 只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步
3. 只有Master可以执行写命令,Slaves只能执行读命令
主从复制问题
1. Master下线,无法执行写请求
2. 以上过程都是手工完成,无法自动Failover操作
Redis-server –slaveof <master-ip> <master-port>,配置当前服务为某Redis服务的slave
redis-server --port 6380 --slaveof 127.0.0.1 6379
Slaveof Host port命令,将当前服务器状态从Master修改为的服务器Slave
Slaveof 127.0.0.1 6379 ,将服务器变为Slave
Slaveof on one,将服务器恢复为Master,不会丢失已同步数据
配置方式:启动时,服务器读取配置文件(redis-6380.conf),并自动成为指定服务器的从服务器
Slaveof <master-ip> <master-port>
Slaveof 127.0.0.1 6379
Redis Sentinel
高可用Sentinel
1. 监控( Monitoring):Sentinel 会不断地检查主服务器和从服务器是否运作正常。
2. 提醒( Notification):当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员
或者其他应用程序发送通知。
3.自动故障迁移( Automatic failover):当主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移
操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器
改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,
使得集群可以使用新主服务器代替失效服务器。
sentinel.conf 配置如下所示:
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
启动 Sentinel
启动方式一:redis-sentinel /path/to/sentinel.conf
启动方式二: redis-server /path/to/sentinel.conf –sentinel
Redis Cluster
Redis集群
Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。一个
Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个
只包含自己的集群当中,要组建一个真正可工作的集群,必须将这些独立的节点连接起来,构成一个包含
多个节点的集群。
1. 3.0 version 支持
2. Redis集群无中心节点
3. 由多个Redis服务器组成的分布式网络服务集群
4. 每个Redis服务器被称为节点Node,节点之间会相互通信( gossip)协议,两两相连。
Redis Cluster集群原理
Redis集群分片
1. redis集群中整个数据库被分为 16384个槽位Slot,所有key都会是这些slot中的一个,key的槽位计算公式
为slot_number=crc16(key)%16384,其中crc16为16位的循环冗余效验和函数
2. 集群中的每个主节点都可以处理0个至16383个槽,当16384个槽位都有某个节点在负责处理时,集群
进入上线状态,并开始处理客户端发送的命令请求
举例
1. 三个主节点7000,7001,7002平均分配16384个slot槽位
2. 节点7000指派的槽位为0至5460
3. 节点7001指派的槽位为5461至10922
4. 节点7002指派的槽位为10923至16383
Redis Cluster集群
redis.conf集群配置文件示例
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
集群演示
下载redis 解压到cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
在7000 至 7005 中,各创建一个 redis.conf 文件,内容可以使用上面的示例配置文件,将配置中的端口号
从 7000 改为与文件夹名字相同端口。cluster-test 文件夹,然后用以下命令启动每个redis:
../redis-server .7000/redis.conf
创建集群命令
./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