揭秘:Redis 背后的数据结构......

我还是很讨厌学习,就像邻居吃了花椒,麻了隔壁。

-- 开篇鸡汤


用娱乐的方式说编程

hello 大家好

我是浩说

前几天项目组开会聊到了"数据结构"这块的内容

于是从同事口中听到了这样的抱怨:

"学数据结构和算法有啥用啊,面试还总问,我天天写业务代码根本用不到!"

像我这种 杠精 本精的反驳体质听完这话怎么可能心如止水

于是我回家之后挑灯夜读、博览群书

诸如:《数据结构从入门到放弃》、《数据结构放弃实战》....

终于!被我发现了"数据结构"在日常开发中的应用:Redis

那么下面就让我们来看看:Redis 背后的数据结构

Redis

Redis作为我们日常开发中的常用工具,通常用来做"缓存"。

且支持五种数据类型:

  1. 字符串 String
  2. 列表 List
  3. Hash
  4. 集合 set
  5. 有序集合 sortedset

(面试点哦,笔记做起来!)

接下来我们就针对每种数据类型 揭开其背后的数据结构。

01 | List

在Redis中,List的底层有两种数据结构:

压缩列表 ziplist

链表 linkedlist

关于-链表:

数据结构与算法--链表(Linked list)

具体使用哪种数据结构将根据下面的逻辑判断:

当List中数据同时满足 单个数据小于64字节数据个数小于512个 则采用压缩列表存储。

否则采用链表存储。

关于 压缩列表 ziplist

压缩列表是Redis特有的一种数据结构,你可以理解为“改进的数组”。

我们知道数组的特点是:连续的、大小一致的 内存空间。

压缩列表在"大小一致"这点上做了改进,压缩列表允许连续的内存空间大小不一致

这样设计的优点是:

数组不管存储多大的数据都要开辟相同的存储空间,这就造成了空间的浪费,而压缩列表则是"用多少开辟多少",将浪费的空间压缩了。

02 | Hash

Hash以键值对的形式保存,它的底层同样存在两种数据结构:

压缩列表 ziplist

散列表 hashtable

具体的选取逻辑和List类似:

当Hash中数据同时满足 所有数据的key和value都小于64字节且数据个数小于512个 则采用压缩列表存储。

否则采用hashtable存储。

03 | set

set用来保存不重复的数据集,依然是两种数据结构:

有序数组

散列表

当set中数据同时满足 所有数据都是整数且数据个数小于512个 则采用有序数组存储。

否则采用散列表存储。

04 | sortedset

相较于刚才的set,sortedset是一种有序集合,两种数据结构:

压缩列表 ziplist

跳表 skiplist

关于 - 跳表:

数据结构与算法:跳表(Skip List)

当sortedset中数据同时满足 所有数据都小于64字节且数据个数小于128个 则采用压缩列表存储。

否则采用跳表存储。

以上就是Redis背后使用的数据结构了

关于一些数据结构的详细介绍我已将之前的文章列了出来

希望能对大家有所帮助

我是浩说,我们下期继续快乐学习!

记得点赞分享支持一下哦!

点个赞,证明你还爱我

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

推荐阅读更多精彩内容