码迷,mamicode.com
首页 > 其他好文 > 详细

redis数据解析

时间:2020-06-29 00:09:25      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:图片   解析   tno   哈希算法   字符串   map   操作   bsp   mask   

1.概述

  数据结构主要包括列表,字符串,跳表,map,set等,底层基于c实现。

2.sds

  redis自建的字符串,数据结构

  

struct sdshdr{
    int len;
    int free;
    char buf[];    
}

主要解决缓存溢出问题。

3.链表

  redis自建的链表保存了双向信息,包括头节点和尾节点。

  

技术图片
typedef struct listNode{
    struct listNode *prev;
    struct listNode *next;
    void *value;    
}listNode;

typedef struct list{

    listNode *head;
    listNode *tail;
    unsigned long len;
    void *(*dup)(void *ptr);
    void *(*free)(void *ptr);
    int (*match)(void *ptr,void *key);

}list;
技术图片

4.哈希表

     通过哈希算法实现的存储,每个字典中存在两个哈希表,当进行rehash操作时会在两个hash表间移动数据。

     

技术图片
typedef struct dictht{
     dictEntry **table;
     unsigned long size;
     unsigned long sizemask;
     unsigned long used;
}dictht;

typedef struct dictEntry{
     void *key;
     union {
         void *val;
         uint64_t u64;
         int64_t s64;
     }v;
     struct dictEntry *next;
}dictEntry;
技术图片

5.redis对象

      redis中所有的数据都是一个对象,

     

技术图片
typedef struct redisObject{
     unsigned type:4;
     unsigned encoding:4;
     void *ptr;
     int lru;
     ……
}robj;
技术图片

type表示该对象为什么类型(如上面提到的sds,list等),lru记录最后使用时间。

redis数据解析

标签:图片   解析   tno   哈希算法   字符串   map   操作   bsp   mask   

原文地址:https://www.cnblogs.com/yangyang12138/p/13205655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!