- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 12 客户端
Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送请求,而服务器接受并处理客户端发送的命令请求,并向客户端返回命令回复。通过I/O多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式处理命令请求,并与多个客户端进行网络通信。对于每个与服务器进行连接的客户端,服务器都为这些客户端建立相应的redis.h/redis...
2020-03-30 18:04:40 124
原创 11.事件
Redis服务器是一个事件驱动程序,服务器需要处理一下两类事件:1)文件事件:Redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并处理这些事情来完成一系列网络通信操作。2)时间事件:Redis服务器中的一些操作需要在给定的时间点执行,而时间事件就是对这类定时操作的抽象。1.文件事件R...
2020-03-30 13:50:13 131
原创 10.AOF持久化
AOF提供了持久化的功能,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态。被写入AOF文件的所有命令都是以Redis的命令请求协议格式保存的,因为Redis的命令请求协议是纯文本格式,所以我们可以直接打开一个AOF文件1. AOF持久化的实现AOF持久化实现可以分为命令追加、文件写入、文件同步三个步骤1.1 命令追加当AOF持久化功能处于打开状...
2020-03-26 13:09:41 151
原创 9.RDB持久化
1.概念一般,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。因为Redis是内存数据库,它将自己的数据库状态存储在内存中,所以如果不想办法将储存在内存中的数据库状态保存到磁盘肯定不行。为了解决这个问题,RDB持久化就应运而生。RDB持久化可以手动执行,也可以根据服务器配置定期执行。RDB持久化生成的RDB文件是一个经过压缩的二进制文件,该文件可以还原成RDB文件时的数...
2020-03-25 14:29:03 173
原创 8.数据库
1. 服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库:struct redisServer{ //... //一个数组,保存着服务器中的所有数据库 redisDb *db; //......
2020-03-23 14:09:26 148
原创 7.对象
1.概念我们前面介绍了Redis用到的所有主要数据结构,但是Resid并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统。这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都至少对应一种前面的数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行给定的命令。使...
2020-03-20 18:23:03 155
原创 6.压缩列表
压缩列表是列表和哈希键的底层实现之一,当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。1.压缩列表的构成压缩列表是Redis为了节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多个节点,每个节点可以保存一个字节数组或者一个整数值。1.1...
2020-03-18 21:51:22 457
原创 5.整数集合
整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。1.整数集合的实现...
2020-03-18 18:13:10 609
原创 4.跳跃表
1.概念跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(lgN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量过多、或者有序集合中元素的成员是比较长的字符串时,Redis会使用跳跃表作为有序集合键的底层实现。Re...
2020-03-17 11:33:23 135
原创 3.字典
1.概念字典,又叫符号表、关联数组、映射。是一种用于保存键值对的抽象数据对象。字典在Redis中应用范围十分广泛,比如Redis的数据库就是使用字典来作为底层实现的,对数据库的增删改查都是构建在字典操作之上的。字典还是哈希表的底层实现之一,当一个哈希键包含的键值对比较多,又或者键值对中的元素都是比较长的字符串时,Redis就会使用字典作为哈希键的底层实现。2.字典的实现...
2020-03-16 22:48:08 102
原创 2.链表
1.链表在Redis中的使用链表提供高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点灵活调整链表的长度。链表在Redis中的作用:链表键、发布与订阅、慢查询、监视器、构建客户端输出缓冲区等2.链表和链表节点的实现每个链表节点使用一个adlist.h/listNode结构:typedef struct listNode{ //前置节点 ...
2020-03-12 22:06:37 85
原创 1.数据结构与对象--简单动态字符串
1.什么是简单动态字符串Redis中的没有用C语言传统的字符串(简称C字符串),而是自己构建了一种名叫简单动态字符串(SDS)的抽象类型。在Redis中C字符串仅仅用作无需对字符串值进行修改的地方,比如日志。对于key,value这种需要变动的键值,底层都是SDS实现。SDS还用做缓冲区:AOF模块中的AOF缓冲区,以及客户端状态中的输入缓冲区,都是由SDS实现...
2020-03-11 23:51:31 136
mysql-5.5.13-win32.zip
2019-09-16
eclipse反编译第三方插件
2019-02-14
Search and Replace.rar
2018-12-31
DbVisualizer-8.9.1.rar
2018-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人