Redisの設計と実現-読書ノート(二)

897 ワード

文書ディレクトリ

  • 整数集合
  • 整数集合の実装
  • 整数集合のアップグレード
  • 圧縮リスト
  • 圧縮リストの構成
  • チェーン更新
  • せいすうしゅうごう


    集合要素がすべて整数であり、数が少ない場合、redisは整数集合を最下位実装として選択します.

    整数集合の実装

    typedef struct intset{
    	uint32_t encoding; //    
    	uint32_t length; //       
    	int8_t contents[];  encoding     16,32,64 
    }intset;
    

    整数セットのアップグレード


    現在のタイプの保存できない数値が表示されたら、すべての要素を直接アップグレードします.
    アップグレードによりメモリの節約と柔軟性の向上
    降格できません

    リストの圧縮


    圧縮リストは連続メモリブロックからなる順序データ構造であり、リストとハッシュの要素内容が小さな整数または短い文字列である場合、ziplistは両者の下位実装に戻る

    圧縮リストの構成


    zlbytes ztail allen entry 1 entry 2...zlend総メモリヘッダノードノード2末尾
    entryの構成:preLength encoding content
    遍歴は後からpreLengthによって位置を特定すればよい

    チェーン更新


    前のノードのpreLengthが大きくなると,後の記憶が下がらなくなり,大きくなるというプロセスが後に起こる.
    前のノード長が254バイト以下の場合preLengthが1バイト以上の場合5バイト目のバイトをフラグビットとする