加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Redis为何这么快——数据存储角度

发布时间:2018-10-12 15:59:20 所属栏目:编程 来源:JAVA高级程序员
导读:【新产物上线啦】51CTO播客,随时随地,碎片化进修 本文内容思想导图如下: 一、简介和应用 Redis是一个由ANSI C说话编写,机能优越、支持收集、可耐久化的K-K内存数据库,并提供多种说话的API。它常用的范例首要是 String、List、Hash、Set、ZSet 这5种 Re

ZSet有序荟萃工具底层实现可所以ziplist(压缩列表)可能skiplist(跳跃表)。

Redis为何这么快——数据存储角度

当一个有序荟萃的元素数目较量多可能成员是较量长的字符串时,Redis就行使skiplist(跳跃表)作为ZSet工具的底层实现。

  1. typedef struct zskiplist {  
  2.  // 表头节点和表尾节点  
  3.  struct zskiplistNode *header, *tail;  
  4.  // 表中节点的数目  
  5.  unsigned long length;  
  6.  // 表中层数最大的节点的层数  
  7.  int level;  
  8.  } zskiplist;  
  9. typedef struct zskiplistNode {  
  10.  // 成员工具  
  11.  robj *obj;  
  12.  // 分值  
  13.  double score;  
  14.  // 退却指针  
  15.  struct zskiplistNode *backward;  
  16.  // 层  
  17.  struct zskiplistLevel {  
  18.  // 提高指针  
  19.  struct zskiplistNode *forward;  
  20.  // 跨度---提高指针所指向节点与当前节点的间隔  
  21.  unsigned int span;  
  22.  } level[];  
  23. } zskiplistNode; 

zadd---zslinsert---均匀O(logN), 最坏O(N)

zrem---zsldelete---均匀O(logN), 最坏O(N)

zrank--zslGetRank---均匀O(logN), 最坏O(N)

Redis为何这么快——数据存储角度

skiplist的查找时刻伟大度是LogN,可以僻静衡二叉树相等,但实现起来又比它简朴。跳跃表(skiplist)是一种有序数据布局,它通过在某个节点中维持多个指向其他节点的指针,从而到达快速会见节点的目标。

【编辑保举】

  1. 怎样行使Redis构建轻量级微处事
  2. 怎样行使Redis做MySQL的缓存
  3. Redis怎样说明慢查询操纵?
  4. 读完这篇文章,就根基搞定了Redis数据库
  5. Redis常见的几种行使方法办理方案总结
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读