Redis Memory Optimization

参考

  • Redis 开发与运维 - 付磊、张益军

RedisObject

Redis 中的所有值对象在 Redis 内部定义为RedisObject,理解RedisObject对内存优化很有帮助,一个RedisObject包含下面几个属性:

  • type: 对象所属类型,stringlisthashsetzset,占4位。 使用type {key}查看对象所属类型,type命令返回的都是值对象的类型,键都是string类型的。
  • encoding: 对象所属类型的内部编码,占4位。这一块对内存的优化非常重要,下面单独说一下
  • lru: LRU 时钟计数器。记录了对象最后一次被访问的时间。当配置了maxmemorymaxmemory-policy=volatile-lru或者allkeys-lru时,该字段用于辅助键的删除。当使用object idletime {key}查看指定键的空闲时间时,不会更新该对象的lru值。
  • ref count: 引用计数器
  • data pointer: 数据指针
redis01:6379[15]> debug object test
Value at:0x7f772a65ab30 refcount:1 encoding:hashtable serializedlength:10 lru:10004393 lru_seconds_idle:1915

数据结构的内部编码

redis 常用的五种数据结构,每种数据结构其实都有多种内部实现,我们称他为内部编码,举个例子

# 查看 redis set 的内部编码
$ obejct encoding "set1" 

qin

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏

打开支付宝扫一扫,即可进行扫码打赏哦