設計とRedisのの実装 - 整数ジャンプテーブルとデータ構造(c)を達成

ジャンプ台  

まず、ジャンプテーブルはO(logN個)のそれらの平均複雑さを見つけるために命じたデータ構造であり、最悪時間計算量は、バランスの取れたツリーと同等ほとんどの場合、O(N)です。Redisのは、クラスタ内のノードの順序集合としてそれを使用して実装し、データ構造など。

ノードは、テーブルの右に、左のために、以下のデータ構造定義テーブルをスキップ:

左手は、メンバーのリストは、固有robjの階でなければならない逆トラバースを逆転するために使用され、各ノードはランダム数1〜32です。

 

 

整数

       ときに、基礎となる実装として小さな整数セットは、として定義されたデータ構造は、以下:

各整数要素は、アレイ内の大きさ、及び無重複の順に配置されています。要素の内容のタイプはコーディングではなく、int8_tに依存することに注意

アップグレード

       整数の集合に要素を追加する場合、新しい要素の型は要素型の元の内容よりも長い場合、アップグレードは何?、最初にアップグレードする必要があります。したがって、添加元素の時間複雑度は、O(N)であり、かつ劣化のアレイをサポートしていない〜

  1. 新しい要素の種類に応じて、元の内容に基づいて容量を拡張
  2. 過去(後方移動)移動古い要素
  3. 新しい要素が追加されます

何が良いので、この自動アップグレードはありますか?

       〜第二に、メモリを節約するために、あなたはInt64の大きな整数を使用するためにそれを必要とする場合にのみ、最初はサイズに関係なく範囲の要素を追加するとき、それは自分自身の成長には十分ではありません、確かに便利です。   

公開された47元の記事 ウォンの賞賛8 ビュー30000 +

おすすめ

転載: blog.csdn.net/nanchengyu/article/details/89316562