[redis读书笔记] 第一部分 数据结构与对象 对象特性

Posted jiangz222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[redis读书笔记] 第一部分 数据结构与对象 对象特性相关的知识,希望对你有一定的参考价值。

一 类型检查和多态

   类型检查,即有的命令是只针对特定类型的,如果类型不对,就会报错,此处的类型,是指的键类型,即robj.type.下面为有类型检查的命令:

对于某一种类型,redis下底层的实现(编码类型 robj.encoding)可以是不同的,比如字符串键可以是ziplist或者linklist,那么可以想象,redis需要支持对命令的多态,无论编码类型是什么,都能得到正确的结果,

 二 内存回收:

robj.refcount用于内存回收,创建新的robj时,refcount为1,对象被新程序使用,refcount加1,反之减1,最终为0时进行robj的回收。

三 对象共享:

  robj.refcount 还可以用来标记对象的共享,比如先后创建2个字符串100的键值对象,他们就会共享一个对象,从而节省空间:

目前来说,redis在初始化服务器的时候,就create了0到9999的所有字符串,以供共享。

而为了防止过于复杂,redis其实只对包含整数字符串的对象进行共享,

四 空转时长

robj.lru用来记录对象最后一次被使用的时间,通过这个时间和当前时间的差值,就能得到空转时间(可以用IDLETIME打印出来),当比如说内存过低时,就会优先释放空转时间最长的对象的内存。

 

以上是关于[redis读书笔记] 第一部分 数据结构与对象 对象特性的主要内容,如果未能解决你的问题,请参考以下文章

读书笔记 -- 算法导论 (序言+第一部分)

读书笔记-《Redis设计与实现》数据结构与对象

读书笔记-《Redis设计与实现》数据结构与对象

读书笔记-《Redis设计与实现》数据结构与对象

[redis读书笔记] 第二部分 单机数据库 RDB持久化

[redis读书笔记] 第二部分 单机数据库