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

面试官:你看过Redis数据结构底层实现吗?

发布时间:2019-06-22 18:08:59 所属栏目:建站 来源:奔头哥
导读:副标题#e# 面试中,redis也是很受面试官亲睐的一部分。我向在这里讲的是redis的底层数据结构,而不是你理解的五大数据结构。你有没有想过redis底层是怎样的数据结构呢,他们和我们java中的HashMap、List、等使用的数据结构有什么区别呢。 1. 字符串处理(str

引用https://segmentfault.com/a/1190000016901154中的两个图:

面试官:你看过Redis数据结构底层实现吗?

面试官:你看过Redis数据结构底层实现吗?

6.1 源码

ziplist没有明确定义结构体,这里只作大概的演示。

  1. typedef struct entry {  
  2.      /*前一个元素长度需要空间和前一个元素长度*/  
  3.     unsigned int prevlengh;  
  4.      /*元素内容编码*/  
  5.     unsigned char encoding;  
  6.      /*元素实际内容*/  
  7.     unsigned char *data;  
  8. }zlentry;  
  1. typedef struct ziplist{  
  2.      /*ziplist分配的内存大小*/  
  3.      uint32_t zlbytes;  
  4.      /*达到尾部的偏移量*/  
  5.      uint32_t zltail;  
  6.      /*存储元素实体个数*/  
  7.      uint16_t zllen;  
  8.      /*存储内容实体元素*/  
  9.      unsigned char* entry[];  
  10.      /*尾部标识*/  
  11.      unsigned char zlend;  
  12. }ziplist; 

第一次看可能会特别蒙蔽,你细细的把我这段话看完就一定能懂。

Entry的分析

(编辑:衢州站长网)

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

推荐文章
    热点阅读