沃梦达 / IT编程 / 数据库 / 正文

Redis学习问题记录——持续更新中

问题: Redis引用计数进行内存回收,怎么解决循环引用问题描述:redis用引用计数法的技术实现了内存回收。但是引用计数法的一个致命弱点就是,如果遇到循环引用,那么循环引用的对象将永不被回收。因此造成内存泄露。...

问题: Redis引用计数进行内存回收,怎么解决循环引用

问题描述:redis用引用计数法的技术实现了内存回收。但是引用计数法的一个致命弱点就是,如果遇到循环引用,那么循环引用的对象将永不被回收。因此造成内存泄露。所以JVM摒弃这个内存回收技术,采用根路径可达算法。那么Redis是怎么解决引用计数的循环引用问题的呢?

解答:待解决
分析:

问题:Redis哈希对象ziplist编码怎么实现哈希的特征——O(1)效率的基本操作

问题描述:Redis中哈希对象有两种编码方式,分别是ziplist、hashtable方式。哈希对象,总得体现哈希算法,使得基本操作达到O(1)的效率。hashtable编码方式使用字典,也即是Java中hashMap的方式,这个我可以理解。但是,ziplist方式所有元素都是紧挨的,它是怎么实现hash,并使得查询等操作有O(1)的时间效率的呢?

解答

使用ziplist编码方式的哈希对象不能实现O(1)复杂度的基本操作,而是通过遍历来查找元素。不过,ziplist编码方式只有在所有键值长度小于64字节,且哈希对象保存的键值对数量小于512个时才使用,因此,它对效率的影响并没有想象中的那么大。

分析

以上问题和解答只是我个人在学习Redis过程中的思考,若有不对的地方,希望大家能够予以纠正。如果大家对这些问题有解决思路和不同的看法也请留言说明,我会采纳并更新到正文,谢谢!

本文标题为:Redis学习问题记录——持续更新中