Redis の二重リンクリストについて詳しく話しましょう

青灯夜游
リリース: 2021-12-01 09:53:25
転載
2137 人が閲覧しました

この記事では、Redis データ構造の二重リンク リストを理解し、二重リンク リストの使用方法を簡単に紹介します。

Redis の二重リンクリストについて詳しく話しましょう

Redis データ型の list list では、データの追加と削除によく使用されるコマンドは、lpush、rpush、lpop、rpop です。 l は左側を意味し、r は右側を意味します。左側と右側で操作を追加および削除できます。これは、これが双方向のデータ構造であり、リストのデータ構造が二重リンクリストであることを示します、Java の LinekdList に似ています。 [関連する推奨事項: Redis ビデオ チュートリアル ]

リンク リストは、効率的なノード再配置機能と順次ノード アクセス方法を提供します。リンク リストのデータは、pre および next ポインターを変更することで変更できます。ノードの。

C 言語には組み込みのリンク リスト データ構造がないため、Redis は独自のリンク リスト構造を構築します。

リンク リスト、リンク リスト、リンク リスト ノードのデータ構造

リンク リストはリンク リストとリンク リスト ノードで構成され、各リンク リスト ノードは adlist で表されます。 h/listNode 構造 :

typedef struct listNode {
    //前置节点
    struct listNode *prev;
    //后置节点
    struct listNode *next;
    // 节点值
    void *value;
} listNode;
ログイン後にコピー

タイトルに示すように、複数の listNode は prev ポインターと next ポインターを介して二重リンク リストを形成できます。 listNodes はリンク リストを形成できますが、管理を容易にするために、

adlist.h/list

を使用してリンク リストを管理します。リストの構造は次のとおりです: Redis の二重リンクリストについて詳しく話しましょう

typedef struct list {
    // 列表头结点
    listNode *head;
    // 列表尾结构
    listNode *tail;
    // 节点值复制函数
    void *(*dup)(void *ptr);
    // 节点值释放函数
    void (*free)(void *ptr);
    // 节点值对比函数 
    int (*match)(void *ptr, void *key);
    // 列表节点数量
    unsigned long len;
} list;
ログイン後にコピー
list 構造は、ヘッドポインタhead、テールポインタtail、およびリンクリストのノード番号計算len。次の図は、リスト構造と 3 つの listNode ノードで構成されるリンク リストを示しています。

#Redis リンク リスト実装の特徴は次のように要約されます。

# 双方向: リンク リスト ノードには前ポインタと次ポインタがあり、各データはポインタを介して取得できます。

リンク リストの長さをすばやく計算します: len 属性を使用してリストの長さを計算しますリスト構造内での時間計算量は O(1) Redis の二重リンクリストについて詳しく話しましょう

ポリモーフィズム: リンク リスト ノードは void* ポインターを使用してノードを保存するため、リンク リストはさまざまなタイプの値の保存をサポートします

    二重リンクリストの使用
  • リストキー、パブリッシュとサブスクライブ、遅いクエリ、モニターなど。
  • 概要
この記事では、リンク リストのデータ構造について説明します。リンク リストは、リンク リストとリンク リスト ノードで構成されます。

リンク リスト ノード前方ポインタと後方ポインタがあるため、Redis のリンク リストは双方向リンク リストです。

リンク リストは、ヘッド ノードとテール ノードを格納して、独自のノードをより適切に管理できます。リンク リストの長さをすばやく計算します。

リンク リストは void* とさまざまな型設定関数を渡すため、リンク リストはさまざまな型の値を持つことができます
  • プログラミング関連の詳細については、知識がある場合は、
  • プログラミング入門
  • をご覧ください。 !

以上がRedis の二重リンクリストについて詳しく話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!