ホームページ  >  記事  >  データベース  >  Redis の二重リンクリストについて詳しく話しましょう

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

青灯夜游
青灯夜游転載
2021-12-01 09:53:252158ブラウズ

この記事では、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 までご連絡ください。