Redis开发与运维:SDS与44字节深入理解
对于上一篇文章,我又自己总结归纳并补充了一下,有了第二篇。 概览 <<左移 开始之前,我们先准备点东西:位运算 i<<n 总结为 i*2^n 所以 1<<5 = 2^5 1<<8 = 2^8 1<<16 = 2^16 1<<32 = 2^32 1<<64 = 2^64 SDS 5种数据类型 Redis 3.2 以后SDS数据类型有5个 #define SDS_TYPE_5 0 #define SDS_TYPE_8 1 #define SDS_TYPE_16 2 #define SDS_TYPE_32 3 #define SDS_TYPE_64 4 结合上面的位运算,我们也能理解这5个数据类型的命名规则。 外部类型String 找 SDS结构 我们现在有定义了5种SDS数据类型,那么如何根据字符串长度找这些类型呢? 或者说输入的字符串长度和类型有什么关系?下面我们来看一看他们之间的关系。 再来看看源码: static inline char sdsReqType(size_t string_size) { if (string_size < 1<<5) return SDS_TYPE_5; if (string_size < 1<<8) return SDS_TYPE_8; if (string_size < 1<<16) return SDS_TYPE_16; #if (LONG