検索
ホームページデータベースRedisRedis の削除ポリシーとエビクション ポリシー

この記事の知識ポイント 期限切れデータの概念 データ削除ポリシー 立ち退きアルゴリズム

序文

##Kaka はインタビュー ガイドを作成するためのロードマップを作成し、そのロードマップに基づいて記事を書く準備をしましたが、後になって、補足されていない知識ポイントを追加していることに気づきました。また、パートナーの皆様にも情報の追加にご協力いただけることを楽しみにしております。コメントセクションでお会いしましょう!

##❞

Redis の削除ポリシーとエビクション ポリシー#ここに画像の説明を挿入

期限切れのデータ まず、3 つの主要な値、つまり性別、名前、年齢を見てみましょう。

これら 3 つの値を設定する手順は、set name kaka setex age 100 24 setex sex 10 1

Redis の削除ポリシーとエビクション ポリシーRedis では、ttl を使用して特定のキーを取得できます。ステータス、ttl を使用して、名前、年齢、性別のステータスをそれぞれ取得しましょう。

3 つの値が表示されます。-1 775 -2

Soこれら 3 つの値によって得られる情報とは何でしょうか。

  • -1 は永続的に有効なデータを表します
  • 775 この値は年齢に設定され、使用されるコマンドは setex age 1000 24残りの有効期限として表されます
  • ##-2 は、期限切れのデータ、削除されたデータ、または定義のないデータを示します
    Redis の削除ポリシーとエビクション ポリシー

期限切れデータのストレージ構造

    時間依存型を設定した場合 名前を指定すると、redis が保存しますメモリアドレス 0x10101
  • その後、redis は時間依存のキーを保存するために別のスペースを開きます
  • ただし、保存方法はメモリですキーに対応するアドレスと有効期限
  • 今日私たちが話している Redis 削除戦略は、削除されたデータです。
    Redis の削除ポリシーとエビクション ポリシー

時限削除とは、タイマーを作成し、それを次のように使用することです。キー 時間が経過すると、タイマー タスクは期限切れのキーをすぐに削除します。

利点: キーは期限切れになると削除されると考えられます。間違いなく最もメモリに優しく、メモリを節約します

欠点: redis のシングルスレッド機能は、すべてのコマンドが特定の順序で実行されることです。有効期限が切れたときにキー値を削除すると、CPU への負担が大きくなり、Redis サーバーの応答時間と IO に直接影響します

スケジュールされた削除は、スペースと引き換えに時間を使用することを意味します

スケジュールされた削除が完了すると、キー値に対応するデータが削除され、有効期限が切れたメモリ領域も直接削除されます。 Redis の削除ポリシーとエビクション ポリシー

遅延削除

この図を見ると、キー値の有効期限が切れても、削除されません。直接削除されます。いつ削除されますか?続きを読むRedis の削除ポリシーとエビクション ポリシー

遅延削除を使用すると、データの有効期限が切れても自動的に削除されず、次回キー値を取得したときに判断して削除する方法となります。キーの有効期限が切れているため、有効期限が切れた場合は削除します。

つまり、再度 get name を実行すると、関数が実行されます。 expirelfNeeded() この関数は、キーの有効期限が切れているかどうかを判断する関数です。有効期限が切れたら nil を返し、メモリから削除します。

Redis の削除ポリシーとエビクション ポリシー利点: CPU パフォーマンスが一定量低下し、削除する必要がある場合にのみ削除されます

欠点:確かにその通りです ホットニュースなどメモリプレッシャーが高いです ホットスポットを過ぎるとほとんど誰もアクセスしなくなります 誰もアクセスしなければキーは常に存在し、一定量を占有しますつまり、この方法は、空間を時間と交換するというものです。

上記では 2 つの削除方法について説明しました。1 つはスケジュールされた削除で、もう 1 つは遅延削除です。 1つは、空間と時間を交換することです。 1つは、時間をスペースと引き換えにすることです。どちらのオプションも比較的極端なアプローチです。次に、定期削除の実施計画を見てみましょう。

まず、redis のストレージ容量を見てみましょう。デフォルトでは 16 個あります。redis.conf には、このパラメータによって制御される構成パラメータ データベースがあります。各データベースには独自の有効期限パーティションがあり、データ アドレスとデータ有効期限時刻が保存されます。

Redis の削除ポリシーとエビクション ポリシー実装方法

redis が起動すると、サーバーの hz 値が読み取られます。デフォルトは 10 です。この値は、info server

Redis の削除ポリシーとエビクション ポリシー を使用して端末上で直接表示でき、その後、サーバーは、serverCron() ポーリングのために 1 秒あたり Hz 回実行されます。引き続き、databasesCron を使用して、16 個の Redis ライブラリの情報に 1 つずつアクセスします。

アクセス時に、activeExpireCycel が実行され、各有効期限[*]を 1 つずつ検出します。各実行時間は 250ms/サーバーです。 hz パラメータ

expirs[*] を 1 つずつ検出すると、ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC がランダムに選択されて検出されます

##キーがタイムアウトした場合は、キーを直接削除します
  • 1 ラウンドで削除されたキーの数>ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC*25% がプロセスを循環し続ける
  • 1 ラウンドで削除されたキーの数 25%、次の期限切れを確認してください[
  • ]
    ここで問題が発生します。250ms/hz の時間が実行されましたが、16 個のデータベースの期限が切れています。循環されていません。その方法を説明します。次回はどの図書館に行ってみようかな?実際、この値は存在しており、current_db の値です。この値は、次回expires[*]を入力して実行したときにactiveExpireCycelに記録されます
  • 特徴1: CPU使用率に高いピーク値がなく、検出頻度をカスタマイズ可能メモリは継続的にクリーンアップされます

Redis の削除ポリシーとエビクション ポリシー

エビクション アルゴリズム

上記では 3 つの削除戦略について説明しましたが、これら 3 つの戦略は次のキーに対してのみ有効です。有効期間が設定されています。

Redis が使用するメモリが不十分なため、エビクション ポリシーを使用して Redis が通常どおり使用できるようにします。

Redis は、各コマンドが実行される前に freeMemorylfNeeded() を呼び出してメモリが十分であるかどうかを確認します。メモリが不足している場合は、いくつかのキーがクリアされます。このデータ消去戦略はエビクション戦略と呼ばれます。

redis の最大使用可能メモリのパラメータは: maxmemory です。デフォルトは 0 です。これは占有される物理メモリの割合を指します。通常は 50% に設定するだけで十分です。

毎回削除するキーの数を選択します: maxmemory-samples

削除ポリシー: maxmemory-policy

「削除戦略に焦点を当てましょう」

  • 紛失したデータの検出が簡単 (つまり、有効期間を設定しましたが、データの有効期限がまだ切れていないため、上記の期限切れ[*]です)
    • 揮発性-lru: 最近ほとんど使用されていないデータを選択します
    • volatile-lfu: 最も最近使用されていないデータを選択
    • ##volatile -ttl: 削除するデータを選択します
    • volatile-random: ランダムに選択します
  • #見た目次の写真で

  • 9s 現在の時刻です

  • 最長のキーは9秒です離れているのは年齢です

  • 使用頻度が最も低いキーは性別です

  • 次の場合volatile-lru をフォローすると年齢が削除されます

  • volatile-lfu をフォローすると性別が削除されます
    ##
  • #すべてのデータを検出

      #allkeys-lru: 最近使用されていないデータを選択します
    • #allkeys-lfu: 最近の使用頻度が最も低いデータを選択します
    • ##allkeys-random: データベース全体をランダムに削除します
    • #データのエビクションをあきらめる
  • no-enviction: メモリが使い果たされて oom エラーが発生するまで、データは削除されません。

    概要

ここで注意すべき点は、エビクション ポリシーでは、揮発性データは永続的な値ではなく、有効期限が設定されたキーを指すということです。 データベース全体は、有効期限と永続的なデータセットを含むすべての値を参照します。

学習の継続、ブログの継続、共有の継続は、カカがそのキャリア以来常に支持してきた信念です。巨大なインターネット上のカカの記事がそうであることを願っています。助けてください。次号でお会いしましょう。

推奨事項: "

redis チュートリアル

"

以上がRedis の削除ポリシーとエビクション ポリシーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Redisのサーバー側操作:提供するものRedisのサーバー側操作:提供するものApr 29, 2025 am 12:21 AM

redis'sserver-sideoperations offferidions and forexuctingcomplexoperationsontheserver.1)機能を調整することで、javascript、orredis'sscriptinglanguage、infulancingscalabilityandmantenmention

Redis:データベースまたはサーバー?役割を分かりやすいRedis:データベースまたはサーバー?役割を分かりやすいApr 28, 2025 am 12:06 AM

redisisbothadatabaseandaserver.1)asadatabase、itusesin memorystorage forfastaccess、理想的なforreal-timeapplicationsandcaching.2)asaserver、itupportspub/submessagingandaging andluascriptingforreal-communicationandserver-sideoperation。

Redis:NOSQLアプローチの利点Redis:NOSQLアプローチの利点Apr 27, 2025 am 12:09 AM

Redisは、高性能と柔軟性を提供するNOSQLデータベースです。 1)大規模データと高い並行性の処理に適したキー価値ペアを介してデータを保存します。 2)メモリストレージとシングルスレッドモデルは、速い読み取りと書き込みと原子性を確保します。 3)RDBおよびAOFメカニズムを使用してデータを持続し、高可用性とスケールアウトをサポートします。

Redis:そのアーキテクチャと目的を理解するRedis:そのアーキテクチャと目的を理解するApr 26, 2025 am 12:11 AM

Redisは、主にデータベース、キャッシュ、メッセージブローカーとして使用されるメモリデータ構造ストレージシステムです。そのコア機能には、シングルスレッドモデル、I/O多重化、持続メカニズム、複製、クラスタリング機能が含まれます。 Redisは、キャッシュ、セッションストレージ、メッセージキューのための実際のアプリケーションで一般的に使用されます。適切なデータ構造を選択し、パイプラインとトランザクションを使用し、監視とチューニングを使用することにより、パフォーマンスを大幅に改善できます。

Redis vs. SQLデータベース:重要な違​​いRedis vs. SQLデータベース:重要な違​​いApr 25, 2025 am 12:02 AM

RedisデータベースとSQLデータベースの主な違いは、Redisが高性能および柔軟性要件に適したインメモリデータベースであることです。 SQLデータベースは、複雑なクエリとデータの一貫性要件に適したリレーショナルデータベースです。具体的には、1)Redisは高速データアクセスとキャッシュサービスを提供し、キャッシュおよびリアルタイムのデータ処理に適した複数のデータ型をサポートします。 2)SQLデータベースは、テーブル構造を介してデータを管理し、複雑なクエリとトランザクション処理をサポートし、データの一貫性を必要とするeコマースや金融システムなどのシナリオに適しています。

Redis:データストアとサービスとしてどのように機能するかRedis:データストアとサービスとしてどのように機能するかApr 24, 2025 am 12:08 AM

redisactsassassadatastoreandaservice.1)asadatastore、itusesin memorystorage for fastorations、supporting variousdatastructureSlike-key-valuepairsandsortedsets.2)asaservice、iteasruascruascriptingrupting criptingforceptingpurplecomplecomplecprexoperations

Redis vs.その他のデータベース:比較分析Redis vs.その他のデータベース:比較分析Apr 23, 2025 am 12:16 AM

他のデータベースと比較して、Redisには次の独自の利点があります。1)非常に速い速度、および読み取り操作は通常、マイクロ秒レベルにあります。 2)豊富なデータ構造と操作をサポートします。 3)キャッシュ、カウンター、公開サブスクリプションなどの柔軟な使用シナリオ。 Redisまたはその他のデータベースを選択する場合、特定のニーズとシナリオに依存します。 Redisは、高性能および低遅延のアプリケーションでうまく機能します。

Redisの役割:データストレージと管理機能の調査Redisの役割:データストレージと管理機能の調査Apr 22, 2025 am 12:10 AM

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール