redis
文章平均质量分 84
ノBye~_77
这个作者很懒,什么都没留下…
展开
-
redis-客户端
结构, 这个结构保存了命令的实现函数、 命令的标志、 命令应该给定的参数个数、 命令的总执行次数和总消耗时长等统计信息。该表是一个字典, 字典的键是一个 SDS 结构, 保存了命令的名字, 字典的值是命令所对应的。命令与命令参数(argv argc)输出缓冲区(buf bufpos)结构时, 它会将客户端状态的。输入缓冲区querybuf。当程序在命令表中成功找到。命令的实现函数cmd。原创 2022-11-26 14:04:00 · 408 阅读 · 0 评论 -
redis-事件
事件, 触发连接应答处理器执行: 处理器会对客户端的连接请求进行应答, 然后创建客户端套接字, 以及客户端状态, 并将客户端套接字的。执行命令将产生相应的命令回复, 为了将这些命令回复传送回客户端, 服务器会将客户端套接字的。事件与命令回复处理器进行关联: 当客户端尝试读取命令回复的时候, 客户端套接字将产生。执行, 当命令回复处理器将命令回复全部写入到套接字之后, 服务器就会解除客户端套接字的。之后, 假设客户端向主服务器发送一个命令请求, 那么客户端套接字将产生。事件与命令回复处理器之间的关联。原创 2022-11-26 14:03:18 · 362 阅读 · 0 评论 -
redis-AOF持久化
如果不加以控制的话,体积过大的AOF文件很可能对Redis服务器、甚至整个宿主计算机造成影响,并且AOF文件的体积越大,使用AOF文件来进行数据还原所需的时间就越多。(loop),这个循环中的文件事件负责接收客户端的命令请求,以及向客户端发送命令回复,而时间事件则负责执行像serverCron函数这样需要定时运行的函数。因为服务器在处理文件事件时可能会执行写命令,使得一些内容被追加到aof_buf缓冲区里面,所以在服务器。当AOF持久化功能处于打开状态时,服务器在执行完一个写命令之后,会以协议格式。原创 2022-11-25 22:05:40 · 144 阅读 · 0 评论 -
redis-RDB持久化
它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题,Redis提供了。,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。的时间, 以及自最后一次保存 RDB 文件以来, 服务器进行了多少次写入的。记录服务器最后一次执行。记录了服务器触发自动。原创 2022-11-25 22:04:42 · 177 阅读 · 0 评论 -
redis-数据库
命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(Time To Live,TTL),在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。Redis是一个键值对(key-value pair)数据库服务器,服务器中的每个数据库都由一个redisDb结构表示,其中,redisDb结构的。在初始化服务器时,程序会根据服务器状态的。命令,可以设定一个时间戳,该过期时间是一个UNIX时间戳,当键的过期时间来临时,服务器就会自动从数据库中删除这个键,可以通过。过期键的定期删除策略由。原创 2022-11-25 22:04:10 · 256 阅读 · 0 评论 -
redis-对象
属性记录了对象所使用的编码, 也即是说这个对象使用了什么数据结构作为对象的底层实现, 这个属性的值可以是表 8-3 列出的常量的其中一个。编码的列表对象使用双端链表作为底层实现, 每个双端链表节点(node)都保存了一个字符串对象, 而每个字符串对象都保存了一个列表元素。)技术实现的内存回收机制, 通过这一机制, 程序可以通过跟踪对象的引用计数信息, 在适当的时候自动释放对象并进行内存回收。, 那么字符串对象将使用一个简单动态字符串(SDS)来保存这个字符串值, 并将对象的编码设置为。原创 2022-11-24 15:25:49 · 157 阅读 · 0 评论 -
redis-压缩列表
压缩列表是 Redis 为了节约内存而开发的, 由一系列特殊编码的连续内存块组成的顺序型(sequential)数据结构。一个压缩列表可以包含任意多个节点(entry), 每个节点可以保存一个字节数组或者一个整数值。)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表来做列表键的底层实现。, 节点值可以是一个字节数组或者整数, 值的类型和长度由节点的。属性以字节为单位, 记录了。原创 2022-11-24 14:22:57 · 298 阅读 · 0 评论 -
redis-整数集合
数组的一个数组项(item), 各个项在数组中按值的大小从小到大有序地排列, 并且数组中不包含任何重复项。将一个新元素添加到整数集合里面, 并且新元素的类型比整数集合现有所有元素的类型都要长时, 整数集合需要先进行。整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 它可以保存类型为。(upgrade), 然后才能将新元素添加到整数集合里面。数组是整数集合的底层实现: 整数集合的每个元素都是。的整数值, 并且保证集合中不会出现重复元素。属性记录了整数集合包含的元素数量, 也即是。原创 2022-11-24 12:44:12 · 308 阅读 · 0 评论 -
redis-跳跃表
跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。的底层实现之一: 如果一个有序集合包含的元素数量比较多, 又或者有序集合中元素的成员(member)是比较长的字符串时, Redis 就会使用跳跃表来作为有序集合键的底层实现。:记录跳跃表的长度,也即是,跳跃表目前包含节点的数量(表头节点不计算在内)。, 比如节点的数量, 以及指向表头节点和表尾节点的指针, 等等。:指向跳跃表的表头节点。:指向跳跃表的表尾节点。两个结构定义, 其中。原创 2022-11-24 12:33:56 · 285 阅读 · 0 评论 -
redis-字典
技术来优化子进程的使用效率, 所以在子进程存在期间, 服务器会提高执行扩展操作所需的负载因子, 从而尽可能地避免在子进程存在期间进行哈希表扩展操作, 这可以避免不必要的内存写入操作, 最大限度地节约内存。(load factor)维持在一个合理的范围之内, 当哈希表保存的键值对数量太多或者太少时, 程序需要对哈希表的大小进行相应的扩展或者收缩。Redis 的字典使用哈希表作为底层实现, 一个哈希表里面可以有多个哈希表节点, 而每个哈希表节点就保存了字典中的一个键值对。另一方面, 当哈希表的负载因子小于。原创 2022-11-22 11:26:30 · 94 阅读 · 0 评论 -
redis-简单动态字符串SDS
Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。每个// 记录 buf 数组中已使用字节的数量// 等于 SDS 所保存字符串的长度int len;// 记录 buf 数组中未使用字节的数量int free;// 字节数组,用于保存字符串};free属性的值为0。原创 2022-11-22 10:29:34 · 96 阅读 · 0 评论 -
redis-集群
Redis集群是Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。原创 2022-11-16 20:40:29 · 178 阅读 · 0 评论 -
redis-哨兵
哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行,当出现故障时通过选择新的master并将所有slave连接到新的master。原创 2022-10-30 17:47:29 · 449 阅读 · 0 评论 -
redis-主从复制
② 建立套接字连接:如果slave创建的套接字能成功连接到master,那么slave将为这个套接字关联一个专门用于处理复制工作的文件事件处理器,这个处理器将负责执行后续的复制工作,比如接收RDB文件以及接收master传播过来的命令等。slave的指令字节对应的位置(多个);当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致的状态,同步的动作称为命令传播。:建立slave到master的连接,使master能够识别slave,并保存slave端口号。原创 2022-10-30 14:47:34 · 227 阅读 · 0 评论