首页 > 其他 > 详细

Redis 内存模型

时间:2020-01-22 12:59:46      阅读:70      评论:0      收藏:0      [点我收藏+]

1. 当我们执行set hello world命令时,会有以下数据模型

  A. sds:sds是简单动态字符串,键hello是以SDS存储的;

  B. redisobject:值world存储在redisobject中,实际上,redis的5中类型都是存在redisobject中,而redisobject中type字段指明了value对象的类型,ptr字段则指明了对象所在的地址,该对象非常重要,Redis对象的类型、内部编码、内存回收、共享对象等功能,都需要redisobject支持;

  C. dictEntry:Redis给每个key-value键值对分配一个dictEntry,里面有着key和val的指针,next指向下一个dictEntry形成链表,这个指针可以将多个哈希值相同的键值对链接在一起;

  D. 无论是dictEntry,还是redisobject、sds对象,都需要内存分配器(如jemalloc分配)内存进行存储,jemalloc在64位操作系统中,将内存空间划分为小、中、巨大三个范围,每个范围又划分了许多小的内存块单元,当Redis存储数据时,会选择大小最合适的内存块进行存储;

  E. Redis支持的5种对象类型,每种结构都至少有两种编码。

2. 优化内存占用

  A. 尽量使用整形替代字符串;

  B. 尽可能使用共享对象;

  C. 关注内存碎片比例;

Redis 内存模型

原文:https://www.cnblogs.com/ruhuanxingyun/p/12228361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!