redis如何编码长整数?

时间:2012-09-25 14:08:17

标签: redis

我已经阅读了redis中的一些代码,但我没有找到它如何处理长整数值(例如SET mykey 123456789123456789)---我的意思是长整数(例如8字节)无法直接存储在ptr中robj struct的字段(我的机器中有4个字节)。

PS:我在object.c中读取了tryObjectEncoding函数的代码,但只找到了REDIS_ENCODING_INT数据类型的编码。事实上,redis并没有长期类型。这是否意味着长度超过4个字节的整数将被编码为REDIS_ENCODING_STRING?

1 个答案:

答案 0 :(得分:3)

REDIS_ENCODING_INT实际上代表一个8字节的数字。请参阅util.c中的方法string2l - 它尝试将字符串转换为long long。

换句话说,使用REDIS_ENCODING_INT编码4到8个字节的整数,而不是默认的字符串编码。