検索
ホームページデータベースRedisRedis キャッシュの 8 つの削除戦略の簡単な分析

Redis キャッシュの 8 つの削除戦略の簡単な分析

Nov 08, 2021 am 10:04 AM
redis排除戦略キャッシュ

この記事では、Redis における 8 つの除去戦略について説明し、その使用方法を説明します。皆様のお役に立てれば幸いです。

Redis キャッシュの 8 つの削除戦略の簡単な分析

Redis キャッシュはデータを保存するためにメモリを使用することはわかっていますが、結局のところ、メモリ サイズには制限があります。キャッシュされるデータの量が増加するにつれて、 、制限 キャッシュ領域は必然的にいっぱいになります。このとき、データを削除するにはキャッシュ削除戦略が必要です。 [関連する推奨事項: Redis ビデオ チュートリアル ]

Redis キャッシュ削除戦略

Redis の削除戦略は、データが削除されるかどうかに基づいて決定できます。

  • データを削除しない唯一の戦略は noeviction です。
  • 他の 7 つの戦略は削除されます。

消去には 7 つの戦略があり、消去候補データセットの範囲に応じてさらに 2 つのカテゴリに分類できます:

  • 有効期限を設定した後volatile-random、volatile-ttl、volatile-lru、volatile-lfu (Redis 4.0 以降に新たに追加) を含む時刻データから削除されました。

  • 削除は、allkeys-lru、allkeys-random、allkeys-lfu (Redis 4.0 以降に新たに追加) を含むすべてのデータ範囲で実行されます。

Redis キャッシュの 8 つの削除戦略の簡単な分析

redis3.0 より前のデフォルトは volatile-lru; redis3.0 (3.0 を含む) 以降はデフォルト削除戦略は noeviction

noeviction Strategy

noeviction は、データを削除しないことを意味します。キャッシュ データがいっぱいで、新しい書き込み要求が来た場合, Redis はサービスを提供しなくなりましたが、エラーを直接返します。

有効期限に基づく消去戦略

volatile-random、volatile-ttl、volatile-lru、および volatile-lfu の 4 つの戦略は、有効期限があるもののためのものです。キーと値のペアを設定します。キーと値のペアの有効期限に達するか、Redis のメモリ使用量が maxmemory しきい値に達すると、Redis は次のポリシーに従ってキーと値のペアを削除します。 volatile-ttl in フィルタリングの際、有効期限が設定されたキーと値のペアは、有効期限が早い順に削除されます。

    volatile-random は、その名前のように、有効期限が設定されたキーと値のペアをランダムに削除します。
  • volatile-lru は、LRU アルゴリズムを使用して、有効期限が設定されたキーと値のペアをフィルターします。
  • volatile-lfu は、LFU アルゴリズムを使用して、有効期限が設定されたキーと値のペアを選択します。
  • すべてのデータ範囲内の削除戦略

allkeys-lru、allkeys-random、allkeys-lfu これら 3 つの戦略によって削除されるデータ範囲は、すべてに拡張されます。キーと値のペア、これらのキーと値のペアに有効期限が設定されているかどうかに関係なく、データをフィルタリングして除外するためのルールは次のとおりです。

allkeys-random 戦略、ランダムにデータを選択して削除します。 ;
  • allkeys-lru 戦略は、LRU アルゴリズムを使用してすべてのデータをフィルターします。
  • allkeys-lfu 戦略では、LFU アルゴリズムを使用してすべてのデータをフィルター処理します。
  • LRU アルゴリズムについて

LRU アルゴリズムは、使用されたデータを維持するためにリンク リストを使用するため、最近最も一般的に使用されているアルゴリズムです。使用するデータが増えると要素の移動に時間がかかり、必然的に Redis メインスレッドに影響を及ぼします。このため、Redis は lru アルゴリズムをいくつか簡略化しました。

LRU 戦略の核となる考え方: データの一部がアクセスされたばかりの場合、そのデータはホット データである必要があり、再びアクセスされることになります。

この中心的なアイデアに従って、Redis の LRU 戦略は、各データに対応する RedisObject 構造内に lru フィールドを設定して、データのアクセス タイムスタンプを記録します。データ削除を実行する場合、LRU 戦略は、候補データ セット内の lru フィールド値が最小のデータ (つまり、アクセス時間が最も長いデータ) を削除します。

したがって、データが頻繁にアクセスされるビジネス シナリオでは、LRU 戦略は実際に最新のアクセス時刻のデータを効果的に保持できます。また、保持したデータに再度アクセスするため、業務アプリケーションのアクセス速度も向上します。

具体的な方法は、キーと値のペアにアクセスするときに、redis が最新のアクセスのタイムスタンプを記録することです。 Redis がデータの削除を決定すると、N 個のデータがランダムに選択され、それらが候補セットとして使用され、最小のタイムスタンプが除外されます。次回データを削除する際には、最初に選択した候補セットよりもタイムスタンプ値が小さいデータが選択され、新たな候補セットに登録されます。データが maxmemory-samples に達すると、最小値が削除されます。

このコマンドを使用して、選択した候補セットの数を設定できます

CONFIG SET maxmemory-samples N

使用上の推奨事項

戦略に基づく その特性により、さまざまな戦略を選択して、さまざまなシナリオのデータを削除できます。
  • キャッシュされたデータが明らかにホットでもコールドでもない場合、つまりデータのアクセス頻度がそれほど変わらない場合は、allkeys-random ランダム戦略を使用して、キャッシュされたデータを排除することをお勧めします。データ;
  • いつデータがホットとコールドの間には明らかな違いがあります。ほとんどのデータを保持するには、allkeys-lru または volatile-lru アルゴリズムを使用することをお勧めします。キャッシュ データ内の最近アクセスされたデータ;
  • ビジネスでトップレベルのデータ、つまり有効期限のないデータが必要な場合、通常は有効期限は設定されず、 volatile-lru 戦略を使用できます。このように、このタイプのデータは削除されませんが、他のデータは LRU ルールに従って削除できます。

プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !

以上がRedis キャッシュの 8 つの削除戦略の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は掘金社区で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
NOSQLの理解:Redisの重要な機能NOSQLの理解:Redisの重要な機能Apr 13, 2025 am 12:17 AM

Redisの主な機能には、速度、柔軟性、豊富なデータ構造のサポートが含まれます。 1)速度:Redisはメモリ内データベースであり、読み取り操作はほとんど瞬間的で、キャッシュとセッション管理に適しています。 2)柔軟性:複雑なデータ処理に適した文字列、リスト、コレクションなど、複数のデータ構造をサポートします。 3)データ構造のサポート:さまざまなビジネスニーズに適した文字列、リスト、コレクション、ハッシュテーブルなどを提供します。

Redis:主要な機能を特定しますRedis:主要な機能を特定しますApr 12, 2025 am 12:01 AM

Redisのコア関数は、高性能のメモリ内データストレージおよび処理システムです。 1)高速データアクセス:Redisはデータをメモリに保存し、マイクロ秒レベルの読み取り速度と書き込み速度を提供します。 2)豊富なデータ構造:文字列、リスト、コレクションなどをサポートし、さまざまなアプリケーションシナリオに適応します。 3)永続性:RDBとAOFを介してディスクにデータを持続します。 4)サブスクリプションを公開:メッセージキューまたはリアルタイム通信システムで使用できます。

Redis:一般的なデータ構造のガイドRedis:一般的なデータ構造のガイドApr 11, 2025 am 12:04 AM

Redisは、次のようなさまざまなデータ構造をサポートしています。1。文字列、単一価値データの保存に適しています。 2。キューやスタックに適したリスト。 3.非重複データの保存に使用されるセット。 4。ランキングリストと優先キューに適した注文セット。 5。オブジェクトまたは構造化されたデータの保存に適したハッシュテーブル。

Redisカウンターを実装する方法Redisカウンターを実装する方法Apr 10, 2025 pm 10:21 PM

Redisカウンターは、R​​edisキー価値ペアストレージを使用して、カウンターキーの作成、カウントの増加、カウントの減少、カウントのリセット、およびカウントの取得など、カウント操作を実装するメカニズムです。 Redisカウンターの利点には、高速速度、高い並行性、耐久性、シンプルさと使いやすさが含まれます。ユーザーアクセスカウント、リアルタイムメトリック追跡、ゲームのスコアとランキング、注文処理などのシナリオで使用できます。

Redisコマンドラインの使用方法Redisコマンドラインの使用方法Apr 10, 2025 pm 10:18 PM

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。

Redisクラスターモードの構築方法Redisクラスターモードの構築方法Apr 10, 2025 pm 10:15 PM

Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisキューの読み方Redisキューの読み方Apr 10, 2025 pm 10:12 PM

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

Redisクラスターzsetの使用方法Redisクラスターzsetの使用方法Apr 10, 2025 pm 10:09 PM

RedisクラスターでのZsetの使用:Zsetは、要素をスコアに関連付ける順序付けられたコレクションです。シャード戦略:a。ハッシュシャーディング:ZSTキーに従ってハッシュ値を分配します。 b。範囲シャード:要素スコアに従って範囲に分割し、各範囲を異なるノードに割り当てます。操作の読み取りと書き込み:a。読み取り操作:ZSetキーが現在のノードのシャードに属している場合、ローカルで処理されます。それ以外の場合は、対応するシャードにルーティングされます。 b。書き込み操作:Zsetキーを保持しているシャードに常にルーティングされます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境