复述中的数据结构和编码详解

  

<强>复述中的数据结构和编码:

  

<强>,,,背景:

  
      <李>,,,,,,,1在复述,在内部使用redisObject结构体来定义存储的值对象。   <李>,,,,,,,2在每种类型都有至少两种内部编码,复述,会根据当前值的类型和长度来决定使用哪种编码实现。   <李>,,,,,,,3在编码类型转换在复述,写入数据时自动完成,这个转换过程是不可逆的,转换规则只能从小内存编码向大内存编码转换。
      李   
  

<强>,,,源码:
  

  

,,,,,,,值对象redisObject:

  
  

,,,,,,,,,,,typedef struct redisObject {
  ,,,,,,,,,,,,,,无符号类型:4,,,,,,,,,,,,,,,,/*对象类型*/
  ,,,,,,,,,,,,,,无符号编码:4,,,,,,,,,,,,/*内部编码*/
  ,,,,,,,,,,,,,,无符号lru: LRU_BITS;,,,,/* lru时间(相对于server.lruclock) */
  ,,,,,,,,,,,,,,int refcount;,,,,,,,,,,,,,,,,,,,/*引用计数器,内存回收机制就是基于该值实现的*/
  ,,,,,,,,,,,,,,void * ptr,,,,,,,,,,,,,,,,,,,,,,,,/*若要存储的是整数值则直接存储数据,否则表示指向数据的指针*/
  ,,,,,,,,,,}robj;

     

<>强,,,,,,,类型类型:

  

,,,,,,,,,,,说明:查看当前键的类型:类型关键

  
  

,,,,,,,,,,,#定义OBJ_STRING 0,,,,/*字符串对象*/
  ,,,,,,,,,,#定义OBJ_LIST 1,,,,,,,/*列表对象*/
  ,,,,,,,,,,#定义OBJ_SET 2,,,,,,,/*集合对象*/
  ,,,,,,,,,,#定义OBJ_ZSET 3,,,,,,,/*有序集合对象*/
  ,,,,,,,,,,#定义OBJ_HASH 4,,,,,,,/*哈希对象*/

     

<>强,,,,,,,编码编码;

  

,,,,,,,,,,,说明:查看当前键的编码:对象编码键

  
  

,,,,,,,,,,,#定义OBJ_ENCODING_RAW 0,,,,,,,,,,,,/*生表示简单动态字符串*/
  ,,,,,,,,,,#定义OBJ_ENCODING_INT 1,,,,,,,,,,,,/*编码为整数很久类型整数*/
  ,,,,,,,,,,#定义OBJ_ENCODING_HT 2,,,,,,,,,,,/*编码为哈希表字典*/
  ,,,,,,,,,,#定义OBJ_ENCODING_ZIPMAP 3,,,,,,,/*编码为zipmap压缩地图*/
  ,,,,,,,,,,#定义OBJ_ENCODING_LINKEDLIST 4,,,,/*编码为正则链表双端链表*/
  ,,,,,,,,,,#定义OBJ_ENCODING_ZIPLIST 5,,,,,,,,/*编码为ziplist压缩列表*/
  ,,,,,,,,,,#定义OBJ_ENCODING_INTSET 6,,,,,,,,/*编码为intset整数集合*/
  ,,,,,,,,,,#定义OBJ_ENCODING_SKIPLIST 7,,,,/*编码为skiplist跳跃表*/
  ,,,,,,,,,,#定义OBJ_ENCODING_EMBSTR 8,,,,,,,,/*嵌入式sds字符串编码embstr编码的简单动态字符串*/
  ,,,,,,,,,,#定义OBJ_ENCODING_QUICKLIST 9,,,,/*基于压缩列表的双端列表实现的快速表*/

     

<>强,,,,,,,最后被访问的时间lru:
  

  

,,,,,,,,,,,概念:记录对象最后一次被访问的时间。
  null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

复述中的数据结构和编码详解