Redis
2020-10-15 17:41:28 0 举报
AI智能生成
redis 高可用 简单梳理总结 备忘
作者其他创作
大纲/内容
基本数据结构
字符String
散列Hash
列表List
集合Set
有序集合Zset
高可用
持久化
RDB方式
介绍:RDB 持久化是将当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),保存的文件后缀是 RDB;当 Redis 重新启动时,可以读取快照文件恢复数据
触发条件
手动触发
save 命令和 bgsave
自动触发
在配置文件中通过 save m n,指定当 m 秒内发生 n 次变化时,会触发 bgsave。
常用配置
save m n
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb:RDB 文件名
dir ./:RDB 文件和 AOF 文件所在目录
AOF方式
介绍:Append Only File Redis 执行的每次写命令记录到单独的日志文件中(有点像 MySQL 的 binlog),当 Redis 重启时再次执行 AOF 文件中的命令来恢复数据。与 RDB 相比,AOF 的实时性更好,因此已成为主流的持久化方案。
开启 aof
需要在配置文件中配置:appendonly yes。
执行流程
命令追加(append):将 Redis 的写命令追加到缓冲区 aof_buf。
文件写入(write)和文件同步(sync):根据不同的同步策略将 aof_buf 中的内容同步到硬盘。
文件重写(rewrite):定期重写 AOF 文件,达到压缩的目的。
常用配置
方案选择与常见问题
复制
数据冗余
故障恢复
负载均衡
高可用基石
复制过程
连接建立阶段
数据同步阶段
全量复制
部分复制
复制偏移量
复制积压缓冲区
服务器运行 ID(runid)
命令传播阶段
哨兵
集群
作用主要有2个
数据分区
高可用
支持主从复制 及 主节点的故障转移
集群搭建
启动节点:将节点以集群模式启动,此时节点是独立的,并没有建立联系。
节点握手:让独立的节点连成一个网络。
分配槽:将 16384 个槽分配给主节点。
指定主从关系:为从节点指定主节点。
节点握手:让独立的节点连成一个网络。
分配槽:将 16384 个槽分配给主节点。
指定主从关系:为从节点指定主节点。
集群方案设计
高可用要求
数据量和访问量
节点数量限制
适度冗余
数据分区方案
哈希取余分区
一致性哈希分区
带虚拟节点的一致性哈希分区
节点通信机制
2个端口 1.普通端口 2.集群端口
Gossip 协议
消息类型
数据结构
集群命令的实现
cluster meet
cluster addslots
客户端访问集群
Smart 客户端
实践须知
集群伸缩
ASK 错误
集群的限制及应对方法
key 批量操作受限
Hash Tag
数据库
集群模式下只支持一个,即 db0
事务/Lua 脚本
key必须在同一个节点 Hash Tag可以解决
Hash Tag
参数优化
cluster_node_timeout
cluster-require-full-coverage
应用场景
计数器 比如帖子的阅读次数 点赞次数
分布式全局唯一id(string)
消息队列(list)
左边进 右边出
新浪/Twitter用户消息列表(list)
实现点赞,签到,like等功能(set)
实现关注模型,可能认识的人(set)
电商商品筛选(set)
排行版(zset)
0 条评论
下一页