05 2022 档案
摘要:Redis 字典 基本语法 字典是Redis中的一种数据结构,底层使用哈希表实现,一个哈希表中可以存储多个键值对,它的语法如下,其中KEY为键,field和value为值(也是一个键值对): HSET key field value 根据Key和field获取value: HGET key fiel
阅读全文
摘要:C语言字符串 char *str = "redis"; // 可以不显式的添加\0,由编译器添加 char *str = "redis\0"; // 也可以添加\0代表字符串结束 C语言中使用char*字符数组表示字符串,'\0'来标记一个字符串的结束,不过在使用的过程中我们不需要显式的在字符串中加
阅读全文
摘要:Redis通过对KEY计算hash,将KEY映射到slot,集群中每个节点负责一部分slot的方式管理数据,slot最大个数为16384。 在集群节点对应的结构体变量clusterNode中可以看到slots数组,数组的大小为CLUSTER_SLOTS除以8,CLUSTER_SLOTS的值是1638
阅读全文
摘要:集群请求命令处理 在Redis的命令处理函数processCommand(server.c)中有对集群节点的处理,满足以下条件时进入集群节点处理逻辑中: 启用了集群模式,通过server.cluster_enabled判断 发送命令的节点不是主节点 收到的命令中包含了key参数或者命令是EXEC,E
阅读全文
摘要:Cluster消息类型定义 #define CLUSTERMSG_TYPE_PING 0 /* Ping消息类型,节点间进行通信交换信息的消息 */ #define CLUSTERMSG_TYPE_PONG 1 /* Pong消息类型 (Ping命令的回复) */ #define CLUSTERMS
阅读全文
摘要:在sentinelHandleRedisInstance函数中,如果是主节点,需要做如下处理: void sentinelHandleRedisInstance(sentinelRedisInstance *ri) { // 省略... // 如果是主节点 if (ri->flags & SRI_M
阅读全文
摘要:在的redis启动函数main(server.c文件)中,对哨兵模式进行了检查,如果是哨兵模式,将调用initSentinelConfig和initSentinel进行初始化,initServer函数中会注册哨兵的时间事件,最后调用sentinelIsRunning运行哨兵实例, int main(
阅读全文