10 2015 档案

摘要:0.前言 Redis目前热门NoSQL内存数据库,代码量不是很大,本系列是本人阅读Redis源码时记录的笔记,由于时间仓促和水平有限,文中难免会有错误之处,欢迎读者指出,共同学习进步,本文使用的Redis版本是2.8.19。 1.数据结构篇 Redis之Hash数据结构 http... 阅读全文
posted @ 2015-10-28 21:51 蒲蜡 阅读(1785) 评论(3) 推荐(2)
摘要:0.前言 Redis有序集合ZSet可以按分数进行排序, 存储结构可能使用ziplist,skiplist和hash表, zset_max_ziplist_entries和zset_max_ziplist_value两个字段控制zset采用何种存储方式, zset_max_ziplist_ent... 阅读全文
posted @ 2015-10-28 21:50 蒲蜡 阅读(10920) 评论(0) 推荐(0)
摘要:0.前言 Redis默认最大内存大小是应用程序可访问的内存大小, 32位windows下是2GB, linux下是3GB. 64位下可以访问的内存为2^64字节, Redis提供了maxmemory字段来限制使用的最大内存. 既然提供了最大内存限制, 那么当我们程序达到最大值时, Redis使用了... 阅读全文
posted @ 2015-10-28 21:50 蒲蜡 阅读(3963) 评论(0) 推荐(0)
摘要:Redis作为内存数据库,所有数据都保存在内存中, 一旦程序停止工作, 数据都将丢失. 需要我们重新从其他地方加载数据. 不过Redis提供了两种方式保存Redis中的数据一种是dump内存直接存入rdb文件中,一种是存在aof文件中,aof文件存储的是一条一条存储和修改数据的命令,类似... 阅读全文
posted @ 2015-10-28 21:50 蒲蜡 阅读(3050) 评论(0) 推荐(0)
摘要:0.前言redis对无序集合的操作几个命令,本文介绍几个命令实际操作过程。 "1.sadd命令" "2.求差集和求并集命令" "3.求交集命令" <span id="sadd" </span 1.sadd命令 <span id="sdiffunion" </span 2.求差集和并集命令(... 阅读全文
posted @ 2015-10-28 21:49 蒲蜡 阅读(6445) 评论(0) 推荐(0)
摘要:0.前言 Redis中有序集合zset需要使用skiplist作为存储数据结构, 关于skiplist数据结构描述可以查询wiki, 本文主要介绍Redis实现的skiplist的细节. 1.数据结构定义 2.创建跳跃表 创建跳跃表过程比较简单, 初始化zskiplist数据结构,... 阅读全文
posted @ 2015-10-28 21:49 蒲蜡 阅读(3512) 评论(0) 推荐(0)
摘要:0.前言 redis初始创建hash表,有序集合,链表时, 存储结构采用一种ziplist的存储结构, 这种结构内存排列更紧密, 能提高访存性能. 本文介绍ziplist数据结构 1.ziplist存储结构 ziplist并没有定义明确的结构体, 根据存储结构我们可以定义ziplist如下... 阅读全文
posted @ 2015-10-28 21:49 蒲蜡 阅读(13290) 评论(0) 推荐(0)
摘要:0.前言 redis中intset是一个整数集合, 只能存储整数类型的数据, 可以是16位, 32位, 或者是64位, 是以升序排列的数组进行保存数据,下面会介绍具体数据结构和对其操作过程. 1.数据结构定义 2.创建集合 创建集合需要分配下内存空间, 初始化结构体内变量 ... 阅读全文
posted @ 2015-10-28 21:48 蒲蜡 阅读(4744) 评论(0) 推荐(0)
摘要:0.前言String操作是Redis操作中最基本的类型,包含get,set,mget,mset,append等等。下面我们会具体分析下一些命令的详细流程,特么简单的命令没有列出。 "1.SET命令" "2.GET命令" "3.SETBIT命令" "4.GETBIT命令" "5.BTICOU... 阅读全文
posted @ 2015-10-28 21:47 蒲蜡 阅读(1587) 评论(0) 推荐(1)
摘要:0.前言 redis是KV型的内存数据库, 数据库存储的核心就是Hash表, 我们执行select命令选择一个存储的db之后, 所有的操作都是以hash表为基础的, 下面会分析下redis的hash数据结构和实现. 1.hash数据结构 2.hash数据结构图 3.渐进式... 阅读全文
posted @ 2015-10-28 21:47 蒲蜡 阅读(13004) 评论(3) 推荐(0)
摘要:前言 最近空闲时间比较多, 开始阅读nginx源码, 阅读的过程总结和笔记整理了下, 汇集成了一个系列的文章, 由于nginx功能实在太多, 没法做到面面俱到, 只对已经阅读过的源码进行记录总结, 以后会逐步进行扩充. 源码版本 nginx1.6.2 源码目录 1.objs目录... 阅读全文
posted @ 2015-10-09 14:44 蒲蜡 阅读(1184) 评论(1) 推荐(2)
摘要:前言 nginx分段下载通过ngx_http_range_filter_module模块进行处理,关于HTTP分段下载过程,可以参考HTTP分段下载一文,主要分为一次请求一段和一次请求多段 涉及数据结构 内容进行分段 入口函数ngx_http_range_header_filte... 阅读全文
posted @ 2015-10-09 14:43 蒲蜡 阅读(3065) 评论(0) 推荐(0)
摘要:前言 nginx配置解析是在初始化ngx_cycle_t数据结构时,首先解析core模块,然后core模块依次解析自己的子模块。 配置解析过程 nginx调用ngx_conf_parse函数进行配置文件解析,下面是核心代码,函数首先打开配置文件,然后循环调用ngx_conf_read_tok... 阅读全文
posted @ 2015-10-09 14:42 蒲蜡 阅读(1569) 评论(0) 推荐(0)
摘要:nginx模块分为以下几类: 涉及数据结构 示例说明 nginx模块是执行configure时生成模块列表,保存在ngx_modules.c中,以下是我本机生成的模块列表 其中ngx_core_module,ngx_http_module,ngx_errlog_mod... 阅读全文
posted @ 2015-10-09 14:42 蒲蜡 阅读(1354) 评论(0) 推荐(0)
摘要:前言 nginx模块化设计, 添加扩展模块变得容易, 下面开发一个非常简单的扩展模块, 实现返回http请求的头部内容, 配置标记是ping_pong, 配置在NGX_HTTP_LOC_CONF中. HTTP处理阶段 nginx处理http请求分为很多的阶段, 下面列出了所有阶段, 服务器接... 阅读全文
posted @ 2015-10-09 14:42 蒲蜡 阅读(1404) 评论(0) 推荐(0)
摘要:前言 nginx的hash表有几种不同的种类, 不过都是以ngx_hash_t为基础的, ngx_hash_t是最普通的hash表, 冲突采用的是链地址法, 不过这里冲突的元素不是一个链表, 而是一个数组, 为了加快访存速度,这种hash表只用于存储一些静态的信息, 例如所有头部信息, 配置信息等... 阅读全文
posted @ 2015-10-09 14:41 蒲蜡 阅读(2294) 评论(0) 推荐(0)
摘要:ngx_buf_t和ngx_chain_t是nginx中操作内存的重要手段, 很多的数据都需要通过这个结构进行保存. 其中ngx_buf_t中保存一块可用内存, ngx_chain_t则是将内存块连接起来,组成一个链表, 操作这两个数据结构函数并不多, 下面进行了详解. 基本数据结构 操... 阅读全文
posted @ 2015-10-09 14:40 蒲蜡 阅读(1959) 评论(1) 推荐(0)
摘要:ngxin中为了加快内存分配的速度,引入了内存池, 大块申请, 减少分配次数, 小块分割, 极大的提高了内存申请速度, 另外一个用途就是省去了很多内存管理的任务,因为这里没有提供内存释放的功能,也就是说在pool中分配的内存,只有pool被销毁的时候才能释放掉,真正的还给系统, 因此全局的pool存... 阅读全文
posted @ 2015-10-09 14:40 蒲蜡 阅读(487) 评论(0) 推荐(0)