随笔分类 -  Redis缓存

1 2 下一页

服务器 - 《Redis设计与实现》读书笔记
摘要:Redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转 命令请求执行流程 客户端将命令请求发送给服务器 服务器读取命令请求,并分析出命令参数 命令执行器根据参数查找命令的实现函数,然后执行实现函数并得出命 阅读全文

posted @ 2021-08-11 17:39 果然朝辉 阅读(75) 评论(0) 推荐(0)

客户端 - 《Redis设计与实现》读书笔记
摘要:对于每个与服务器进行连接的客户端,服务器都为这些客户端建立了相应的src/server.h/client结构(客户端状态),这个结构保存了客户端当前的状态信息,以及执行相关功能时需要用的数据结构 创建客户端 普通客户端 创建普通客户端 通过网络连接与服务器进行连接的普通客户端,那在客户端使用conn 阅读全文

posted @ 2021-08-11 17:38 果然朝辉 阅读(76) 评论(0) 推荐(0)

事件 - 《Redis设计与实现》读书笔记
摘要:Redis服务器是一个事件驱动程序,服务器处理的事件分为时间事件和文件事件两种类型 文件事件 服务器对套接字操作的抽象 Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接 服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络 阅读全文

posted @ 2021-08-11 17:37 果然朝辉 阅读(54) 评论(0) 推荐(0)

AOF持久化 - 《Redis设计与实现》读书笔记
摘要:AOF持久化:通过保存Redis服务器执行的写命令来记录数据库状态 AOF持久化的实现 AOF持久化的步骤: 写命令追加到服务器状态的aof_buf缓冲区 此步骤由feedAppendOnlyFile函数完成 当AOF持久化功能处于打开状态时,服务器在执行完一个命令之后, 会以协议格式将被执行的写命 阅读全文

posted @ 2021-08-11 17:36 果然朝辉 阅读(70) 评论(0) 推荐(0)

RDB持久化 - 《Redis设计与实现》读书笔记
摘要:RDB持久化功能:将Redis在内存中某一个时间点的数据库状态经过压缩保存到磁盘上的一个RDB二进制文件里面,避免数据意外丢失, 通过RDB二进制文件可以还原生成RDB二进制文件那个时间点的数据库状态, RDB文件的创建: 内存 ⇒ 磁盘 save命令: 阻塞Redis服务器进程,直到RDB文件创建 阅读全文

posted @ 2021-08-11 17:35 果然朝辉 阅读(70) 评论(0) 推荐(0)

数据库键空间过期键处理 - 《Redis设计与实现》读书笔记
摘要:切换数据库 默认情况下,Redis客户端的目标数据库为0号数据库 通过修改client.db指针,指向不同数据库,从而实现切换目标数据库的功能 客户端切换目标数据库命令: SELECT 数据库序号 在处理多数据库程序时,为了避免误操作(特别像FLUSHDB这样的危险命令), 最好先执行一个SELEC 阅读全文

posted @ 2021-08-11 17:34 果然朝辉 阅读(108) 评论(0) 推荐(0)

内存回收与对象共享 - 《Redis设计与实现》读书笔记
摘要:Redis在对象系统中构架了一个引用计数计数实现了内存回收机制 和 对象共享机制 基于引用计数技术的 内存回收机制 程序通过跟踪对象的引用计数信息,在适当的时候自动释放对象并进行内存回收 基于引用计数技术的 对象共享机制 共享对象机制对于节约内存非常有帮助,数据库中保存的相同值对象越多,对象共享就越 阅读全文

posted @ 2021-08-11 17:32 果然朝辉 阅读(147) 评论(0) 推荐(0)

类型检查与命令多态 - 《Redis设计与实现》读书笔记
摘要:Redis中用于操作键的命令分为两种类型 可以对任何类型的键执行 只能对特定类型的键执行 类型检查的实现 在执行一个类型特定的命令之前,Redis会先检查输入键对应的值对象的类型是否能够执行命令,然后在决定是否执行命令 类型特定命令所进行的类型检查是通过redisObject结构的type属性来实现 阅读全文

posted @ 2021-08-11 17:31 果然朝辉 阅读(67) 评论(0) 推荐(0)

有序集合对象 - 《Redis设计与实现》读书笔记
摘要:有序集合对象的编码可以是ziplist或者skiplist ziplist编码的有序集合对象使用压缩列表作为底层实现 每个集合元素使用两个紧挨在一起的压缩列表节点来保存 第一个节点保存元素的成员,第二个节点保存元素的分值 压缩列表内的集合元素按分值从小到大进行排序 分值较小的元素被放置在靠近表头的方 阅读全文

posted @ 2021-08-11 17:29 果然朝辉 阅读(70) 评论(0) 推荐(0)

集合对象 - 《Redis设计与实现》读书笔记
摘要:集合对象的编码可以是intset或者hashtable intset编码的集合对象使用整数集合作为底层实现 集合对象包含的所有元素都被保存在整数集合里面 hashtable编码的集合对象使用字典作为底层实现 字典的每个键都是一个字符串对象,每个字符串对象包含了一个集合元素 字典的每个值都是NULL 阅读全文

posted @ 2021-08-11 17:28 果然朝辉 阅读(49) 评论(0) 推荐(0)

列表对象 - 《Redis设计与实现》读书笔记
摘要:列表对象的编码可以是ziplist或者linkedlist ziplist编码的列表对象使用压缩列表作为底层实现,每个压缩列表节点保存了一个列表元素 linkedlist编码的列表对象使用双端链表作为底层实现,每个双端链表节点保存了一个字符串对象,每个字符串对象保存了一个列表元素 字符串对象是Red 阅读全文

posted @ 2021-08-11 17:27 果然朝辉 阅读(44) 评论(0) 推荐(0)

哈希对象 - 《Redis设计与实现》读书笔记
摘要:哈希对象的编码可以是ziplist或者hashtable ziplist编码的哈希对象使用压缩列表作为底层实现 保存了同一个键值对的两个节点总是紧挨在一起的,保存键的节点在前,保存值的节点在后, 先添加到哈希对象中的键值对会被放在压缩列表的表头方向,后添加到哈希对象中的键值对会被放在压缩列表的表尾方 阅读全文

posted @ 2021-08-11 17:27 果然朝辉 阅读(48) 评论(0) 推荐(0)

字符串对象 - 《Redis设计与实现》读书笔记
摘要:字符串对象的编码可以是int、raw和embstr 一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么用long类型的整数保存,即编码为int 一个字符串对象保存的是浮点数值,并且这个浮点数值可以用long double类型来表示, 那么用embstr编码的简单动态字符串(S 阅读全文

posted @ 2021-08-11 17:26 果然朝辉 阅读(54) 评论(0) 推荐(0)

对象系统 - 《Redis设计与实现》读书笔记
摘要:对象系统 Redis使用对象来表示数据库中的键和值 每种对象都用到了至少一种数据结构:动态字符串、链表、字典、跳跃表、整数集合、压缩列表 针对不同的使用场景,为对象设置多种不同的数据结构实现,优化对象在不同场景下的使用效率 基于引用计数技术的 内存回收机制 和 对象共享机制 对象带有访问时间记录信息 阅读全文

posted @ 2021-08-02 17:17 果然朝辉 阅读(38) 评论(0) 推荐(0)

压缩列表 - 《Redis设计与实现》读书笔记
摘要:使用场景 当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,使用压缩列表实现列表键 当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,使用压缩哈希实现哈希键 定义 // 压缩列表是为了节约内存而开发出由 一系列特 阅读全文

posted @ 2021-08-02 17:15 果然朝辉 阅读(46) 评论(0) 推荐(0)

整数集合 -《Redis设计与实现》读书笔记
摘要:使用场景 当一个集合只包含整数值元素,并且集合的元素数量不多时,使用整数集合实现集合键 定义 // 整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,可以保存类型为int16_t、int32_t或者int64_t的整数值 typedef struct intset { // 编码 阅读全文

posted @ 2021-08-02 17:08 果然朝辉 阅读(46) 评论(0) 推荐(0)

跳跃表 -《Redis设计与实现》读书笔记
摘要:使用场景 当有序集合包含的元素数量比较多 或者 有序集合中元素的成员是比较长的字符串时,使用跳跃表实现有序集合 集群节点中用作内部数据结构 定义 // 跳跃表节点 typedef struct zskiplistNode { // 成员对象:一个SDS值 // 在同一个跳跃表中,各个节点保存的成员对 阅读全文

posted @ 2021-08-02 16:56 果然朝辉 阅读(53) 评论(0) 推荐(0)

字典 -《Redis设计与实现》读书笔记
摘要:使用场景 当哈希键包含数量比较多的键值对 或者 键值对中的元素都是比较长的字符串时,使用字典实现哈希键 Redis的数据库,对数据库的curd操作也是构建在对字典的操作之上的 定义 // 哈希表节点 typedef struct dictEntry { // 键 void *key; // 值 un 阅读全文

posted @ 2021-07-31 13:05 果然朝辉 阅读(49) 评论(0) 推荐(0)

动态字符串 -《Redis设计与实现》读书笔记
摘要:SDS(simple dynamic string): 简单动态字符串 SDS使用场景 包含字符串值的键值对,在底层都是由sds实现 用作缓冲区:AOF模块中的AOF缓冲区、客户端状态中的输入缓冲区 SDS定义 struct sdshdr { // 记录buf数组中已使用字节的数量 // 等于sds 阅读全文

posted @ 2021-07-28 17:02 果然朝辉 阅读(43) 评论(0) 推荐(0)

《Redis高阶应用》讲座总结
摘要:数据结构延展 - 常用数据结构:String,Hash,List,Set,Sorted Set(不聊这些) - 高级数据结构:Bitmaps,hyperloglog,GEO 单机拓展到分布式 - 为什么要分区:性能瓶颈、资源瓶颈、横向扩展 - 分区方案 - 客户端自定义hash计算Redis的地址 阅读全文

posted @ 2019-06-10 14:44 果然朝辉 阅读(255) 评论(0) 推荐(0)

1 2 下一页

导航