object.c
object.c文件主要记录了Redis对象的创建和释放方法
1 | robj *createEmbeddedStringObject(char *ptr, size_t len) { |
从这个函数中,我们可以看出Redis在创建一个REDIS_ENCODING_EMBSTR编码的字符串对象时,是SDS连同redisObject一同创建的。也就是说这个字符串是不可以修改的。
1 | robj *createStringObjectFromLongLong(long long value) { |
这个函数是根据传入的整数值来创建一个字符串对象。从这里可以看到主要有三个判断:
- 如果设置的值符合Redis共享整数对象的范围时,是直接复用共享对象,并不会去创建一个新的对象。
- 如果传入的值是long类型的,这创建一个REDIS_ENCODING_INT编码类型的字符串对象。
- 如果传入的值为long long类型的,则创建REDIS_ENCODING_RAW编码类型的字符串对象。
debug命令
1 | /* Object command allows to inspect the internals of an Redis Object. |