Memcached源码分析之item结构

item是Memcached中抽象实际数据的结构,我们分析下item的一些特性,便于后续Memcached的其他特性分析。

typedef struct _stritem {
    struct _stritem *next;//item在slab中存储时,是以双链表的形式存储的,next即后向指针
    struct _stritem *prev;//prev为前向指针
    struct _stritem *h_next;//Hash桶中元素的链接指针
    rel_time_t      time; //最近访问时间
    rel_time_t      exptime;//过期时间
    int             nbytes;//数据大小
    unsigned short  refcount;//引用次数
    uint8_t         nsuffix;    //不清楚什么意思?
    uint8_t         it_flags;   //不清楚什么意思?
    uint8_t         slabs_clsid;//标记item属于哪个slabclass下
    uint8_t         nkey;       //key的长度
    union {
        uint64_t cas;
        char end;
    } data[];//真实的数据信息
} item;

其结构图如下所示:

即Item由两部分组成,item的属性信息和item的数据部分,属性信息解释如上,数据部分包括cas,key和真实的value信息,item在内存中的存储形式如下:

https://i-blog.csdnimg.cn/blog_migrate/b17ed9cccb869de8816b8cf9703d00a3.png

这个图画出了部分结构,还有Hash表的结构没有画出。



这里大概介绍了item的一些信息,后面我们会分析item插入Hash表等信息。

注:本篇博客的图片摘自:http://kenby.iteye.com/blog/1423989

                                               http://www.nosqlnotes.net/archives/222

                                               

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值