Redis Sentinel 主从复制的问题 手动故障转移
写能力和存储能力受限
Redis Sentinel架构 有多个Sentinel节点
不用来存储数据
多个节点判断master节点的故障,进行故障转移
保证高可用,即便一个Sentinel节点挂点也没事
客户端只会记录sentinel的地址(因为sentinel会进行故障转移,master节点地址不固定)
一套sentinel可以监控多套master-slave,利用master-name作为标识
Sentinel的故障转移 多个sentinel发现并确认master有问题
选举出一个sentinel作为领导
选出一个slave作为新的master
通知其余slave成为新 …
Redis基础学习 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 …
Redis的主从复制 单机部署的问题 机器故障(高可用)
容量瓶颈(分布式)
QPS瓶颈(分布式)
主从复制的作用 为一个数据提供了副本
slave从master复制一个备份库
master可以有多个slave
一个slave只能有一个master
数据流向是单向的,由master–>slave
扩展读性能,可以实现读写分离
主从复制实现 slaveof slaveof 127.1 6380
取消复制
slaveof no one
配置 #配置这个redis服务复制ip:port这个redis作为他的slave slaveof ip port #只读,必须保证从和主的内容一致 slave-read-only yes …
Redis的持久化 Redis持久化作用 什么是持久化 redis的所有数据保存在内存中,对数据的更新回异步的保存在磁盘中
持久化方式 快照 MySQL Dump
Redis RDB
日志 MySQL Binlog
Hbase HLog
Redis AOF
RDB持久化 什么是RDB redis可以通过命令,把当前数据库的状态保为一个RDB文件(二进制)
也可以通过命令把硬盘上的RDB载入到redis中
同时RDB文件也是一个复制的媒介
触发机制 save 通过save命令让redis生成rdb文件,生成成功返回‘OK’
同步命令,阻塞命令,会导致服务器阻塞
会替换老的rdb文件
复杂度On
bgsave 接收到bgsave …
Redis高级特性初识 慢查询 客户端请求的生命周期 客户端发送命令
入队列
执行命令(慢查询在这一阶段)
返回客户端
(客户端超时,不一定是慢查询,慢查询只是客户端超时的一个可能)
配置 slowlog-max-len,固定长度
slowlog-log-slower-than,慢查询阈值(单位微秒)
=0,记录所有命令
<0,不记录任何命令
#1. 第一次开启配置 config get slowlog-max-len = 128 config get slowlog-log-slower-than = 10000 #2. 修改默认配置重启 #3. 动态配置 config set slowlog-max-len = 128 …