Skip to content

Commit

Permalink
update sql docs
Browse files Browse the repository at this point in the history
  • Loading branch information
fengzhao committed Jan 12, 2025
1 parent 11beca0 commit f603bfa
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions redis/1、Redis入门.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -1405,8 +1405,6 @@ replica-read-only yes
该阶段的主要作用是在主从节点之间建立连接,为数据同步做好准备。
**步骤一、保存主节点信息**
从节点服务器内部维护了两个字段,即 masterhost 和 masterport 字段,用于存储主节点的 ip 和 port 信息。
Expand All @@ -1417,7 +1415,7 @@ replica-read-only yes
**步骤二、建立 socket 连接**
从节点每秒1次调用复制定时函数 replicationCron(),如果发现了有主节点可以连接,便会根据主节点的ip和port,创建socket连接。如果连接成功,则:
从节点每秒1次调用复制定时函数 `replicationCron()`,如果发现了有主节点可以连接,便会根据主节点的ip和port,创建socket连接。如果连接成功,则:
从节点:为该socket建立一个专门处理复制工作的文件事件处理器,负责后续的复制工作,如接收RDB文件、接收命令传播等。
Expand Down Expand Up @@ -1455,8 +1453,6 @@ replica-read-only yes
### redis-cluster 教程
Redis集群提供一种方式自动将数据分布在多个Redis节点上。
Expand Down Expand Up @@ -1540,8 +1536,14 @@ https://www.huaweicloud.com/articles/38e2316d01880fdbdd63d62aa26b31b4.html
redis 集群没有使用**一致性哈希**。它用一种不同的分片形式,在这种形式中,每个 key 都是一个概念性(**hash slot**)的一部分。中文也叫**哈希槽** 。
**槽**:**英文slot** ;不是一个计量单位,没有一个槽有多少兆等概念;
Redis 集群中默认分配了 16384 个 hash slots,当我们 set 一个key 时,会对 key 用`CRC16`算法来取模得到所属的`slot`,然后将这个 key 分到哈希槽区间的节点上。
(1)槽一共有16384个所以槽的**编号是从0到16383**;假如有三台主机,那么每一个的主机所分的槽为,一号主机:[0-5460];二号主机[5641-10922];三号主机[10923-16383]
为了计算给定的 key 应该在哪个 hash slot 上,我们简单地用这个 key 的 CRC16 值来对 16384 取模。
Expand Down Expand Up @@ -2096,6 +2098,14 @@ https://v2ex.com/t/696387
redis 哨兵(sentinel )也是企业场景中最常见的高可用方案。也是官方推荐的高可用方案。
哨兵模式的核心还是主从模式的演变,只不过相对于主从模式,在主节点宕机导致不可写的情况下,多了探活,以及竞选机制:
从所有的从节点中竞选出新的主节点,然后自动切换。竞选机制的实现,是依赖于在系统中启动Sentinel进程,对各个服务器进行监控。
redis-sentinel 本身也是一个独立运行的进程,它能监控多个 master-slave 集群,发现 master 宕机后能进行自动切换。
`redis-sentinel` 可执行文件其实是指向 `redis-server` 可执行文件的符号链接。
Expand Down

0 comments on commit f603bfa

Please sign in to comment.