Redis

1.指针函数与函数指针

指针函数本质是指针,其返回值是指针。如 float *fun(); 函数指针,本质是指针。如int(*f) (intx);/*声明一个函数指针*/  从直观上看*号要是和函数名括在一起那么是函数指针 没有的括在一起的话是指针函数。

2.Redis链表类型

I.节点是双端链表

II.链表(list)除了有头指针,尾指针还包括链表长度。

3.Redis字典

I.三个重要结构:字典->哈希表->哈希节点

1) 字典包括大小为2的哈希表数组。哈希表结构中又包括哈希表节点数组。哈希节点有后继节点。即:哈希表节点数组每个元素指向哈希节点链表

2) 为了提高插入效率都是在哈希表节点均在前面插入,新插入的节点会成为头节点。

3)字典中哈希表(一般使用ht[0]进行操作,ht[1]用于rehash。rehash结束后两个数组交换,并释放交换后的ht[1]的空间)

4)MurmurHash2算法计算哈希值;地址链接法解决hash冲突

II. rehash

1).负载因子=实际哈希节点数 / 哈希节点数组大小 【load_factor = ht[0].used / ht[0].size】。负载因子越大空间开销越小,查找越慢。

2).触发时机:

    a) 负载因子大于5或者(load_factor >= 1且执行BGSABE或BGREWRITEAOF命令时哈希表扩张。   

    b)load_factor < 0.1 触发哈希表收缩。

3).渐进式rehash

    a)  开始期间字典中的rehashIndex字段大于-1,rehash结束rehashIndex重置为-1。

    b) rehash期间维护两个哈希表:查找的时候现在ht[0]中查找,若不成功再去ht[1查找;要是添加的话直接在hash[1]中进行,保证ht[0]只减不增.

4.跳跃表

5.整数集合(intset)

I.有序且不重复

6.压缩列表(ziplist)

I.节点:previous_enrty_length,encoding,content组成

1)previous_enrty_length 前一个节点的长度

2)encoding:数据类型 + 数据长度

00,10,10开头表示字节数据类型,11开头表示为整数。

其中00 开头表示编码长度为1字节,后6位表示数组实际长度,且content字节数组长度<=63;

其中01 开头表示编码长度为2字节,后14位表示数组实际长度,content字节数组长度<=16383;

其中10开头表示编码长度为5字节,后32位表示数组实际长度,content字节数组长度<=4294967295。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • 字典 Redis 中的字典 由 dict.h/dict 结构表示: type 和 privdata 是针对不同类型...
    jiangmo阅读 527评论 2 0
  • 引入 Redis对外提供了5种类型:字符串、列表、集合、有序集合以及哈希表,但底层实现并不是固定的,以上五种数据结...
    宇宙最强架构师阅读 644评论 0 3
  • 字典,又称符号表,是保存键值对的抽象数据结构。很多语言都内置字典这种常用的数据结构,但是C语言没有内置,所以red...
    舒小贱阅读 1,315评论 0 2
  • 写这篇文章的时候正处于从无锡回南京(家)的高铁上,看着窗两侧的世界向后快速奔跑;也幻想着推开家门那一刻孩子看我惊讶...
    康庄大道2017阅读 207评论 0 0
  • 我有个哥哥,尽管我基本上没有叫过他哥哥,因为他只比我大6个月,我们来自一个族系,本家那种,从小在一个班级,直到初中...
    7f8903e23e9e阅读 155评论 0 0