RedisのOBJECTコマンド(訳文)
2095 ワード
原文をご覧になるにはこちらをクリックしてください
OBJECTコマンドを使用すると、指定したRedisオブジェクトを内部から表示できます.エラーの検出に役立ち、keyがどのような符号化タイプを使用しているかを知ることができます.これは、ストレージスペースの節約に役立ちます.Redisをキャッシュとして使用すると、OBJECTコマンドで取得した情報に基づいてkeyの淘汰ポリシーを設定できます.
OBJECTコマンドは、複数のサブコマンドをサポートします. OBJECT REFCOUNT:特定のキーに対応する値の参照数を返します.このコマンドは主にデバッグに使用されます. OBJECT ENCODING:特定キー対応値を返す内部符号化方式. OBJECT IDLETIME:特定のキーの空き時間を返します(読み取りも書き込みもありません).秒単位で.戻り値は秒単位ですが、このタイマーの実際の精度は10秒レベルで、もちろん将来のバージョンでは変更される可能性があります.このサブコマンドは、maxmemory-policyがLRUまたはnoevictionに設定されている場合にのみ使用できます.
オブジェクトには複数の符号化方式があります(redisの値は内部オブジェクトの形式で格納され、異なる符号化方式、すなわち異なる記憶オブジェクトタイプ):文字列(String)符号化方式はraw(従来の文字列符号化方式)またはint(空間を節約するために、1つの文字列が整数で64ビットの符号整形で表すことができる場合、この文字列はこのように符号化される).(注:stringには、39バイト以下の文字列を格納するためのembstrという符号化方法もあります.) チェーンテーブル(List)に対応する符号化方式はziplistまたはlinkedlistである.チェーンテーブルが小さい場合はziplist方式で符号化され、記憶領域が節約されます. 集合(Set)に対応する符号化方式はintsetまたはhashtableである.集合が小さく整数のみで構成されている場合、intset符号化が使用される. ハッシュテーブル(Hashe)に対応する符号化方式はziplistまたはhashtableである.ハッシュ・テーブルが小さい場合はziplistストレージを使用します. 秩序化集合(Sorted Set)に対応する符号化方式はziplistまたはskiplistである.ziplist符号化は、より小さな秩序化集合に使用することができる.skiplist符号化は、任意のサイズの秩序化集合に使用することができる.
もしあなたの操作がRedisが省スペースの符号化方式を使用できなくなったら(例えば、文字列が長くなり、集合が大きくなります).Redisは自動的に汎用符号化方式に変換します.
異なるサブコマンドには、異なる戻り値があります. refcountとidletimeの戻り値は整数です. encodingは、対応する符号化タイプを返す.表示されるオブジェクトが存在しない場合、戻り値は空です(nil).
現在の符号化タイプに対応する記憶領域が不足すると、redisは符号化タイプを変換する.以下の例を示した.
OBJECT subcommand [arguments [arguments ...]]
2.2.3以上のバージョンの利用可能時間の複雑度:O(1).
OBJECTコマンドを使用すると、指定したRedisオブジェクトを内部から表示できます.エラーの検出に役立ち、keyがどのような符号化タイプを使用しているかを知ることができます.これは、ストレージスペースの節約に役立ちます.Redisをキャッシュとして使用すると、OBJECTコマンドで取得した情報に基づいてkeyの淘汰ポリシーを設定できます.
OBJECTコマンドは、複数のサブコマンドをサポートします.
オブジェクトには複数の符号化方式があります(redisの値は内部オブジェクトの形式で格納され、異なる符号化方式、すなわち異なる記憶オブジェクトタイプ):
もしあなたの操作がRedisが省スペースの符号化方式を使用できなくなったら(例えば、文字列が長くなり、集合が大きくなります).Redisは自動的に汎用符号化方式に変換します.
戻り値
異なるサブコマンドには、異なる戻り値があります.
例
redis> lpush mylist "Hello World"
(integer) 4
redis> object refcount mylist
(integer) 1
redis> object encoding mylist
"ziplist"
//10
redis> object idletime mylist
(integer) 10
現在の符号化タイプに対応する記憶領域が不足すると、redisは符号化タイプを変換する.以下の例を示した.
redis> set foo 1000
OK
redis> object encoding foo
"int"
redis> append foo bar
(integer) 7
redis> get foo
"1000bar"
redis> object encoding foo
"raw"