redis数据解析

Posted yangyang12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis数据解析相关的知识,希望对你有一定的参考价值。

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数据解析的主要内容,如果未能解决你的问题,请参考以下文章

片段(Java) | 机试题+算法思路+考点+代码解析 2023

无法解析片段中的 findViewById [重复]

无法解析片段中的 ViewModelProvider 构造?

如何利用redis来进行分布式集群系统的限流设计

Redis五大数据类型详解

RecyclerView未显示已解析的GSON数据