摘要: Redis服务器负责与多个客户端建立网络通信,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转。 命令请求过程(以set命令为例) 1、客户端向服务器发送命令请求 SET KEY VALUE。 Redis服务器的命令请求来自于Redis客户端, 阅读全文
posted @ 2020-05-19 23:10 温暖如太阳 阅读(672) 评论(0) 推荐(0) 编辑
摘要: Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复。 通过使用由I/O多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式处理命令请求,并于多个客户 阅读全文
posted @ 2020-05-18 22:44 温暖如太阳 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 除了RDB持久化功能之外,Redis还提供了AOF持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。 服务器在启动时,可以通过载入和执行AOF文件中保存的命令来还原服务器关闭前的数据库状态。 AOF持久化功 阅读全文
posted @ 2020-05-17 21:02 温暖如太阳 阅读(535) 评论(0) 推荐(0) 编辑
摘要: Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到磁盘,那么服务器 进程一旦退出,服务器中的数据库状态也会消失不见。 为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将数据库状态保存到磁盘里面 1、RDB文件的创建与载入 Re 阅读全文
posted @ 2020-05-17 09:40 温暖如太阳 阅读(485) 评论(0) 推荐(0) 编辑
摘要: Redis 服务器将所有的数据库都保存在服务器状态redisServer结构的db数组中,db数组的每个项都是一个redisDB: struct redisServer{ //一个数组保存着服务器中的所有数据库 redisDb *db; //数据库的个数 int dbnum; } dbnum:服务器 阅读全文
posted @ 2020-05-16 07:52 温暖如太阳 阅读(369) 评论(0) 推荐(1) 编辑
摘要: 前面我们看了Redis用到的主要数据结构,如简单动态字符串(SDS)、双向链表、字典、压缩列表、整数集合等。 但是Redis并没有直接使用这些数据结构来实现键值对,而是基于这些数据结构创建了一个对象系统,这个系统包括字符串对象、列表对象、哈希对象、集合对象、有序集合对象,除此之外,redis的对象系 阅读全文
posted @ 2020-05-15 00:11 温暖如太阳 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 压缩列表是列表键与哈希键的底层实现之一。当一个列表键只包含少量的列表项,并且每个列表项要么就是小整数值,要么就是长度较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。 压缩列表是为了节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多的节点 阅读全文
posted @ 2020-05-13 22:55 温暖如太阳 阅读(324) 评论(0) 推荐(0) 编辑
摘要: (一)跳跃表 跳跃表是一种有序的数据结构,它通过每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表作为有序集合键的底层实现。 阅读全文
posted @ 2020-05-13 08:43 温暖如太阳 阅读(275) 评论(0) 推荐(0) 编辑
摘要: Redis的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表节点,而每个哈希节点就保存在字典中的一个键值对。 redis字典所用的哈希表由disht结构定义。 typedef struct dictht{ dictEntry **table;//哈希表数组 unsigned long siz 阅读全文
posted @ 2020-05-12 08:06 温暖如太阳 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。 redis中链表应用广泛,如list中就使用了链表。 每一个链表节点使用listNode结构标识(双向链表): typedef struct listNode{ //前置节点 struct list 阅读全文
posted @ 2020-05-11 21:18 温暖如太阳 阅读(269) 评论(0) 推荐(0) 编辑