redis高可用方案学习

redis基本概念

数据类型:String(字符串)、List(列表)、Hash(哈希)、 Set(集合)和Sorted Set(有序集合)。

底层数据结构:简单动态字符串、双向链表、压缩列表、哈希表、跳表和整数数组。
在这里插入图片描述
数据结构的时间复杂度

名称时间复杂度特征
哈希表O1采用hash算法
跳表O(logN)在链表基础上增加了多级索引,通过索引位置的跳转,定位数据
双向链表O(N)顺序读写,通过数组下标或者链表的指针逐个元素访问
压缩列表O(N)同上
整数数组O(N)同上

全局哈希表:redis使用哈希表保存所有键值对。通过哈希表可以用O(1)的时间复杂度快速查找到键值对。哈希表是一个数组,数组的每个元素称为一个哈希桶,哈希桶保存键值对的指针,如图entry元素保存了指针 *key和 *value。依靠哈希计算,无论数据量多少,只需要一次计算就能找到相应的键了。
在这里插入图片描述

AOF日志(写后日志,即先执行命令,成功后才记录,有助于使用日志恢复数据)
RDB内存快照(提供写时复制。支持全量快照和增量快照)

生产环境考虑混合使用AOP日志和内存快照。内存快照以⼀定的频率执⾏,在两次快照之间,使⽤AOF⽇志记录这期间的所有命令操作。这样⼀来,快照不⽤很频繁地执⾏,这就避免了频繁fork对主线程的影响。⽽且,AOF⽇志也只⽤记录两次快照间的操作,不需要记录所有操作了,当第二次做全量快照时,就可以清空AOF日志了。

缓存异常

缓存和数据库不一致

在这里插入图片描述

缓存雪崩/击穿/穿透

问题原因方案
缓存雪崩1、大量数据同时过期 2、实例挂掉1、缓存过期时间设置随机数 2、服务降级/熔断/限流/ 3、集群模式
缓存击穿热点数据过期热点数据不设置过期时间
缓存穿透缓存和数据库中无要访问的数据1、缓存空值或默认值。2、使用布隆过滤器 3、入口对请求合法性进行检查

redis主从

读操作:主库、从库都可以接收;
写操作:⾸先到主库执⾏,然后,主库将写操作同步给从库。
从库首次从主库RDB文件全量同步,后续将存储在replication buffer(记录RDB文件生成后收到的所有写操作)中的修改操作发给从库。从库再执行这些操作实现同步。
在这里插入图片描述

redis主-从-从

将主库生成RDB和传输RDB的压力,以及联方式分散到从库上。
在部署从集群时,可以手动选择一个从库,用于及联其它从库,减轻主库的压力。
在这里插入图片描述
主从有个最大的缺点是主不能挂了,如果主挂了就没法写数据,只能读。所以redis哨兵和redis集群出场了。

redis哨兵机制

通过哨兵机制,实现主从库自动切换,有效解决主挂了问题。
哨兵其实就是⼀个运⾏在特殊模式下的Redis进程,主从库实例运⾏的同时,它也在运⾏。哨兵主要负责的 就是三个任务:监控、选主(选择主库)和通知。
这就引出了一个问题,哨兵也要是集群,不能单点故障(配置必须一致)。
在这里插入图片描述

redis cluster(切片集群)

切片集群(保存大量数据的通用机制):就是指启动多个Redis实例组成⼀个集群,然后按照⼀定的规则,把收到的数据划分成多份,每⼀份⽤⼀个实例来保存,支持大规模横向扩展。

Redis Cluster方案(通过规则管理切片集群):采⽤哈希槽Hash Slot,来处理数据和实例 之间的映射关系。在Redis Cluster⽅案中,⼀个切⽚集群共有16384个哈希槽,这些哈希槽类似于数据分区,每个键值对都会根据它的key,被映射到⼀个哈希槽中。我们在部署Redis Cluster⽅案时,可以使⽤cluster create命令创建集群,此时,Redis会⾃动把这些槽平均分布在集群实例上。

客户端配置Redis Cluster集群所有实例信息。
Redis Cluster集群实例之间会同步全局路由表,告诉客户端访问的数据在哪个实例上。客户端会在本地缓存对应信息。当数据发生迁移时,客户端再次请求集群没有找到数据,集群通过内部机制告诉客户端去新的实例找数据。客户端更改本地缓存,后续命令发给新实例。如图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值