
redis
文章平均质量分 92
复习备考的龙龙
学习C++的一名小学生,欢迎大家沟通交流~
展开
-
Redis使用及源码剖析-21.Redis集群-2021-2-4
文章目录前言一、节点1.节点启动2.集群数据结构3.CLUSTER MEET 命令的实现二、槽指派1.记录节点的槽指派信息2.传播节点的槽指派信息3.记录集群中所有槽的指派信息三、在集群中执行命令四、重新分片总结前言集群是Redis提供的分布式数据库方案,集群通过分片进行数据共享,并提供复制和故障转移功能一、节点一个 Redis 集群通常由多个节点(node)组成, 在刚开始的时候, 每个节点都是相互独立的, 它们都处于一个只包含自己的集群当中, 要组建一个真正可工作的集群, 我们必须将各个独.原创 2021-02-04 17:54:38 · 401 阅读 · 0 评论 -
Redis使用及源码剖析-20.Redis哨兵(Sentinel )-2021-2-4
文章目录前言一、Redis哨兵简介二、初始化哨兵节点1.初始化服务器2.使用哨兵专用代码3.初始化哨兵状态4.初始化 Sentinel 状态的 masters 属性5.创建连向主服务器的网络连接三、获取主服务器信息四、获取从服务器信息五、向主从服务器发送信息六、从主从服务器接收信息1.更新sentinels词典2.创建连向其他哨兵的命令连接七、检测主观下线状态八、检查客观下线状态九、选举领头哨兵十、故障转移前言哨兵(Sentinel )是Redis高可用性的解决方案,本文将对其进行简单介绍一、R.原创 2021-02-04 16:44:03 · 346 阅读 · 0 评论 -
Redis使用及源码剖析-19.Redis复制-2021-2-4
文章目录前言一、同步实现1.完整重同步2.部分重同步a.复制偏移量b.复制积压缓冲区c.服务器运行id二、复制的完整过程1.设置主服务器的地址和断开2.建立套接字连接3.发送ping命令4.身份认证5.发送端口信息6.同步7.命令传播总结前言Redis中用户可以执行slaveof命令让一个服务器去复制另一个服务器,被复制的服务器称为主服务器,另一个服务器称为从服务器。例如服务器127.0.0.1:6379从服务器127.0.0.1:12345复制内容的命令如下所示:127.0.0.1:6379&g.原创 2021-02-04 11:17:21 · 166 阅读 · 0 评论 -
Redis使用及源码剖析-18.Redis二进制位数组、慢查询日志和监视器实现-2021-2-3
文章目录前言一、二进制位数组1.二进制位数组命令2.位数组表示3.setbit getbit命令实现3.bitcount命令实现4.源码二、慢查询日志1.慢查询日志简介2.慢查询日志保存3.慢查询日志添加三、监视器1.监视器简介2.称为监视器3.向监视器发送消息总结前言本文对Redis的二进制位数组,慢查询日志和监视器作以简要介绍。一、二进制位数组1.二进制位数组命令Redis提供了setbit getbit bitcount和bitop四个命令用于处理二进制位数组,如下所示://设置某一.原创 2021-02-03 18:53:28 · 233 阅读 · 0 评论 -
Redis使用及源码剖析-17.Redis排序-2021-2-3
文章目录一、排序命令二、命令实现1.排序对象定义2.sort key命令实现3.alpha选项实现4.by选项实现三、排序源码总结一、排序命令Redis 的sort命令可以对列表键、集合键或者有序集合键的值进行排序,如下所示://列表排序redis>rpush nums 3 1 2redis>lrange nums 0 -13 1 2redis>sort nums1 2 3 //集合排序,alpha表示按照字母顺序排序redis>sadd str aaa bb.原创 2021-02-03 10:13:21 · 327 阅读 · 0 评论 -
Redis使用及源码剖析-15.Redis发布订阅-2021-2-2
文章目录前言一、发布订阅命令简介二、频道的订阅和退订1.频道订阅2.频道退订2.频道退订四、发布消息五、Redis源码总结前言本文对Redis的发布订阅功能的实现做了简单介绍,包括发布订阅命令和内部实现一、发布订阅命令简介redis客户端可以订阅某个频道或者模式,这样当其他客户端向该频道发布了消息时,订阅了该频道的客户端以及订阅了和该频道匹配模式的客户端就可以收到。命令如下:subscribe "news.it" //订阅news.it频道unsubscribe "news.it" //退.原创 2021-02-02 18:30:16 · 172 阅读 · 0 评论 -
Redis使用及源码剖析-14.Redis服务器-2021-1-28
文章目录前言一、命令执行过程1.客户端发送命令2.服务端读取命令请求总结前言Redis服务器负责和多个客户端建立网络连接,为多个客户端提供服务,本文对Redis服务器进行简要介绍,包括客户端到服务器的命令执行过程、服务器执行的周期性函数以及服务器的初始化。一、命令执行过程1.客户端发送命令Redis 服务器的命令请求来自 Redis 客户端, 当用户在客户端中键入一个命令请求时, 客户端会将这个命令请求转换成协议格式, 然后通过连接到服务器的套接字, 将协议格式的命令请求发送给服务器, 如下.原创 2021-01-28 11:55:48 · 454 阅读 · 0 评论 -
Redis使用及源码剖析-13.Redis客户端-2021-1-27
文章目录前言一、客户端结构体简介1.套接字描述符2.名字3.标志4.输入缓冲区5.命令和命令参数6.命令的实现函数7.输出缓冲区8.身份认证9.时间10.完整结构体二、客户端创建与关闭1.普通客户端创建2.普通客户端关闭3.lua脚本的伪客户端4.aof文件的伪客户端总结前言Redis服务端是典型的一对多程序,可以为多个客户端提供服务,Redis服务端结构体中的clients链表中保存了所有的客户端信息,如下所示:struct redisServer { // 一个链表,保存了所有客户端状.原创 2021-01-27 20:14:56 · 233 阅读 · 0 评论 -
Redis使用及源码剖析-12.Redis事件模型-2021-1-27
文章目录前言一、文件事件1.文件事件处理器简介2.文件事件处理器组成3.IO多路复用程序实现4.事件类型5.事件处理器二、时间事件1.时间事件简介2.定时事件和周期事件三、事件调度四、事件API1.事件结构体定义2.事件循环处理器创建函数3.事件调用主函数4.IO多路复用实现总结前言Redis服务端是一个事件驱动程序,本文将对服务端需要处理的文件事件和时间事件进行简单介绍。一、文件事件1.文件事件处理器简介Redis服务端和客户端通过套接字进行通信,所谓文件事件就是套接字操作的抽象,如写事件.原创 2021-01-27 12:40:27 · 301 阅读 · 1 评论 -
Redis使用及源码剖析-11.Redis持久化-2021-1-27
文章目录前言一、RDB持久化1.RDB持久化简介2.RDB文件的创建3.RDB文件的载入4.RDB文件结构分析5.SAVE函数二、AOF持久化1.AOF持久化简介2.AOF缓存区3.AOF文件写入及追加4.AOF重写5.AOF文件写入同步函数总结前言众所周知Redis是基于内存的key-value型数据库,这样每次执行数据库操作时只涉及到内存,不涉及磁盘读取写入,效率很高。但是随之而来的问题便是当服务端进程正常或者异常退出时,如何保证数据的安全性和可靠性,这就涉及到持久化的问题。Redis持久化分为.原创 2021-01-27 11:31:46 · 260 阅读 · 0 评论 -
Redis使用及源码剖析-10.Redis数据库-2021-1-27
文章目录前言一、数据库概念简介1.数据库定义2.数据库切换3.数据库键空间4.过期时间设置5.过期删除策略6.数据库通知二、数据库相关API1.数据库通知函数2.过期检查函数3.切换目标数据库函数4.设置过期时间函数5.查找key对应值函数总结前言本文对Redis的数据库文件进行简要介绍,包括数据库的选择,键的新建更新删除、Redis过期策略以及事件通知等。一、数据库概念简介1.数据库定义Redis在redis.h中定义了数据库结构redisDb ,如下所示:/* Redis databa.原创 2021-01-26 19:17:33 · 232 阅读 · 0 评论 -
Redis使用及源码剖析-9.Redis键操作函数-2021-1-26
文章目录前言一、Redis客户端结构体简介二、字符串键函数1.set系列函数2.incr decr函数三、列表键函数1.添加元素函数2.设置指定位置索引函数3.获取列表范围元素的函数四、哈希键函数1.获取指定字段的值2.获取哈希表容量五、集合键函数1.向集合添加元素2.判断元素是否在集合内部六、有序集合键函数1.从有序集合删除元素2.获取指定元素分值总结前言前面已经了解到Redis包括五种类型的对象:字符串对象、列表对象、哈希对象、集合对象和有序集合对象。对象的底层由SDS、双向链表、压缩列表、跳表.原创 2021-01-26 15:32:36 · 272 阅读 · 0 评论 -
Redis使用及源码剖析-8.Redis对象-2021-1-21
文章目录前言一、Redis对象模型二、字符串对象1、字符串对象编码形式2、字符串对象编码转换三、列表对象1、列表对象编码形式2、列表对象编码转换四、哈希对象1、哈希对象编码形式2、哈希对象编码转换五、集合对象1、集合对象编码形式2、集合对象编码转换六、有序集合对象1、有序集合对象编码形式2、有序集合对象编码转换七、键类型检查八、命令多态实现九、引用计数十、空转时长总结前言本文对Redis中的五种对象模型进行了简单整理,简要介绍了其内部实现机理。一、Redis对象模型 Redis对象系统包含字符.原创 2021-01-21 11:06:41 · 160 阅读 · 0 评论 -
Redis使用及源码剖析-6.Redis整数集合-2021-1-20
文章目录前言一、整数集合实现二、intset api1.根据值确认编码方式2.根据值确认编码方式3.获取指定索引的元素4.设置指定索引的元素5.在集合中查找指定元素的位置6.集合编码方式升级7.集合元素移动8.集合元素增加删除总结前言整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。整数集合涉及的文件是intset.h和intset.c一、整数集合实现整数集合(intset)是 Re.原创 2021-01-20 10:41:23 · 124 阅读 · 0 评论 -
Redis使用及源码剖析-5.Redis跳跃表-2021-1-19
文章目录前言一、跳表节点实现二、跳表实现三、跳表API1、随机生成层数2、创建跳表节点3、创建跳表4、计算节点排位5、插入新节点6、删除节点总结前言跳跃表是Redis的底层数据结构之一,跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。跳跃表支持平均 O(\log N) 最坏 O(N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。在大部分情况下, 跳跃表的效率可以和平衡树相媲美, 并且因为跳跃表的实现比平衡树要来得.原创 2021-01-19 16:34:03 · 180 阅读 · 0 评论 -
Redis使用及源码剖析-3.Redis链表-2021-1-17
文章目录前言一、链表简介二、链表实现1.链表节点实现2.链表实现3.链表迭代器实现4.链表API总结前言本文对Redis的底层数据结构链表做了简要介绍,涉及的文件是adlist.h和adlist.c。一、链表简介链表是一种非常常用的数据结构,在很多高级语言中都有实现。Redis 使用的 C 语言并没有内置这种数据结构, 所以 Redis 构建了自己的链表实现。链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元.原创 2021-01-17 15:03:57 · 175 阅读 · 0 评论 -
Redis使用及源码剖析-2.Redis简单动态字符串(SDS)-2021-1-16
文章目录前言一、SDS介绍1.SDS定义2.柔性数组简介二、SDS和c语言字符串对比1.SDS可以常数时间获取字符串长度2.SDS可以杜绝缓冲区溢出3.减少修改字符串带来的内存重分配次数4.SDS是二进制安全的5.SDS支持部分c函数总结前言本文对Redis的简单动态字符串(simple dynamic string)进行了简要介绍,并结合sds对Redis的内存分配释放api进行分析,涉及的源码文件为sds.h、sds.c、zmalloc.h、zmalloc.c,源码下载地址为https://gi.原创 2021-01-17 10:28:47 · 688 阅读 · 1 评论 -
Redis使用及源码剖析-1.Redis入门基础命令-2021-1-16
文章目录前言一、Redis是什么?二、Redis 对象简介三、字符串对象操作四、列表对象操作五、哈希对象操作六、集合对象操作七、有序集合对象操作八、对象共有操作总结前言本文针对redis五种类型的对象操作进行了简单整理,如有不当之处,可交流讨论。一、Redis是什么?Redis全称为Remote DIctionary Server(Redis) ,是一个由Salvatore Sanfilippo写的key-value型的数据存储系统。简而言之,Redis是一个key-value类型的非关系型数.原创 2021-01-16 15:47:29 · 380 阅读 · 0 评论