redis补充说明之对象

60阅读 0评论2019-07-27 stolennnxb
分类:NOSQL

今天来聊聊redis当中的对象(别想太多- -||)
感觉需要补充的有三部分:
1. 内存回收
由于C语言并不具备自动内存回收功能,所以redis在自己的对象系统中构建了一个引用计数来实现内存回收,通过这一机制,程序可以通过跟踪对象的引用计数信息,在适当的时候自动释放对象并进行内存回收。当新建一个对象时,引用计数的值会初始化为1;当对象被一个新程序使用时,引用计数+1, 当对象不再被一个程序使用时,它的引用计数-1;当对象的引用计数值变为0时,对象所占的内存会被释放

2. 对象共享
除了用于实现引用计数内存回收机制之外,对象的引用计数属性还带有对象共享的作用。在redis中,让多个键共享同一个值的对象需要执行以下两个步骤:1)将数据库键的值指针指向一个现有的对象;2)将被共享的值对象的引用计数+1;
3. 对象的空转时长
redisObject结构当中还包含一个属性叫做lru,该属性记录了对象最后一次被命令程序访问的时间,程序可以根据当前时间减掉这个值来获取这个对象的空转时长,这样的话,如果需要内存回收之类的工作,就可以利用这个特征来搞点事情了~~~
上一篇:redis补充说明之跳跃表
下一篇:redis当中数据库的实现