首页 > 代码库 > [redis读书笔记] 第一部分 数据结构与对象 对象特性
[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读书笔记] 第一部分 数据结构与对象 对象特性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。