2

redisでいくつかのコードを読みましたが、長整数値(SET mykey 123456789123456789など)を処理する方法が見つかりませんでした--- ptrフィールドに直接格納できない長整数(8バイトなど)を意味します(4 robj構造体の(私のマシンのバイト)。

PS:object.cのtryObjectEncoding関数のコードを読みましたが、REDIS_ENCODING_INTデータ型のエンコーディングしか見つかりませんでした。実際、redisには長いタイプはありません。これは、4バイトより長い整数がREDIS_ENCODING_STRINGとしてエンコードされることを意味しますか?

4

1 に答える 1

3

REDIS_ENCODING_INT実際には8バイトの数値を表します。util.cのメソッドstring2lを参照してください-文字列をlonglongに変換しようとします。

つまり、4〜8バイトの整数REDIS_ENCODING_INTは、デフォルトの文字列エンコーディングではなく、を使用してエンコードされます。

于 2012-09-25T16:29:36.157 に答える