2

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

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

4

1 回答 1

3

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

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

于 2012-09-25T16:29:36.157 回答