主节点负责写数据、从节点负责读数据。主节点按期将数据同步到从节点,从而保证数据的一致性。redis
一主一从缓存
一主多从
针对“读”较多的场景,“读”由多个从节点来分担,但节点越多,主节点同步到多节点的次数也越多,影响带宽,也加剧主节点的稳定服务器
树状主从:一主多从的缺点(主节点推送次数多压力大)可用些方案解决,主节点只推送一次数据到从节点B,再由从节点B推送到C,减轻主节点推送的压力。session
缺点:数据结构
redis提供了“发布、订阅”模式的消息机制,其中消息订阅者与发布者不直接通讯,发布者向指定的频道(channel)发布消息,订阅该频道的每一个客户端均可以接收到消息
分布式
哨兵机制正式为了解决主从复制的缺点优化
原理:当主节点出现故障时,由Redis Sentinel自动监控完成故障发现和转移,并通知应用方,实现高可用性线程
支持RDB、AOF。两种持久化机制。持久化可避免进程丢失而形成数据丢失。代理
RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发
手动触发有save和bgsave两命令code
save命令:阻塞当前Redis,直到RDB持久化过程完成为止,若内存实例比较大会形成长时间阻塞,线上环境不建议用它
bgsave命令:redis进程执行fork操做建立子线程,由子线程完成持久化,阻塞时间很短(微秒级),是save的优化,在执行redis-cli shutdown关闭redis服务时,若是没有开启AOF持久化,自动执行bgsave;
显然bgsave是对save的优化
优势:1,压缩后的二进制文文件适用于备份、全量复制,用于灾难恢复
2,加载RDB恢复数据远快于AOF方式
缺点:1,没法作到实时持久化,每次都要建立子进程,频繁操做成本太高
2,保存后的二进制文件,存在老版本不兼容新版本rdb文件的问题
缓存
排行榜:redis的有序列表数据结构很是方便。
计数器:点赞、访问数。
限速器:抢购秒杀,防止用户疯狂点击带来没必要要的压力;
session共享:session默认保存在服务器中,即当前服务器。若是是集群服务,用户的信息可能在不一样机器,因此会形成用户频繁登陆。利用redis保存session,不管哪台机器均可以获取session信息。
简单的消息队列:除了Redis自身的发布/订阅模式,咱们也能够利用List来实现一个队列机制,好比:到货通知、邮件发送之类的需求