首页 > Redis实战 > 正文

【前言】从0开始,重新出发

佛若2018-09-130人围观

从0开始,重新出发

一、脑海回顾

redis是非关系型数据库或者是一种非关系型数据结构

印象中,redis一般的搭建模式有如下两种

  • 哨兵模式
    • 服务 -> 哨兵 -> (master + slave + slave)
  • 高可用集群模式
    • 服务 -> jedisCluster -> { (master+slave+slave) + (master+slave+slave) + (master+slave+slave) }

1、高可用集群模式

redis3.0以及之后的版本才支持,需要ruby环境,因为集群命令的脚本是由ruby编写(文件后缀.rb)。

选举机制

单个主从区域(master + slave + slave)如果master服务停掉了,剩下的两个slave会进行选举,每个slave会发送讯息至另外两个主从区域,当收到同意的回执后,统计回执票数,当收到的票数> 1/2,则选举成功

  • 另外的两个master先收到谁的请求,就先投票哪一个,并只能投一个;
  • 如果slave收到的票数都一样,则进行下一轮投票;
  • 为了避免一直,两个slave发送请求的时间不一致(有随机延时时间);
分片机制(slot)

redis总槽大小为 0~16383 (共16384个)

  • 分片时会平均分配至各个节点;
  • set name gaoyuan 命令执行时,会先将key进行hash运算(CRC16),将得到的hash值与16383进行取余,得到值在哪个区间就落在哪个节点处。

2、为什么redis集群需要至少3个master节点?

因为算法缘故,如果只有2个,其中一个宕机了,选举的结果永远无法满足大于1/2的要求。

3、常遇到的问题

  • 缓存穿透
  • 缓存雪崩

二、综上

由于一直没有系统的学习过redis,以致掌握的一直是模糊的概念以及局限于简单的使用场景。下一阶段会通过阅读《redis实战》来巩固一下基础知识(本书的redis版本较低,没有涉及到高可用集群,偏向于原理与常见实践),并会将心得定期整理并写出来。