Redis系列(十)Redis对象系统
前言 介绍 类型 编码和底层数据结构 五种常见的对象类型 类型检查与命令多态 内存回收 对象共享 对象淘汰:空转时长 总结 参考文章 联系我 前言 其实关于本文,我犹豫再三。 对象系统值得写一篇文章吗?从技术上来讲,当然是值。但是对于我们大部分人来说,它都是隐身的。 写的话,顺序放在哪里?在 Redis 系列(九)底层数据结构之五种基础数据类型的实现 中其实就提到了,那么应该在此之前先介绍它吗? 结论:想那么多屁事,写就完事了。 介绍 正如上一篇文章提到的,Redis 不是生硬的使用前面介绍过的数据结构,来实现了字符串,列表,字典等等数据结构,而是精心打造了一个对象系统。 对于 Redis 来说,所有的所谓的数据类型,本质上都是一个对象,而且同一个类型的对象,底层实现编码不一样。 Redis 对象的定义为: // 类型 typedef type : 4 ; // 编码 unsigned encoding : 4 ; // 指向底层数据结构的指针 void * ptr ; . . . 类型 对象的 type 属性,记录了对象的类型,这个类型就是我们所熟知的 Reids 的数据类型了,比如字符串,列表,集合,有序集合,散列等。 对于 Redis 数据库中的键值对来讲,键值永远是一个字符串对象,值可以是很多种。 编码和底层数据结构 对象的 ptr 指针,指向对象的底层数据结构