Redis キャッシュの削除戦略について話しましょう
Redis キャッシュの削除戦略は何ですか?この記事では、Redis のキャッシュ削除戦略について説明し、キャッシュ戦略設定の提案を紹介します。
リモート辞書サービスである Redis (Remote Dictionary Server) は、ANSI C 言語で書かれたオープン ソースのログ タイプで、ネットワークをサポートしており、メモリや永続性、Key-Value データベースを備え、複数の言語で API を提供します。 [関連する推奨事項: Redis ビデオ チュートリアル ]
これには次の特徴があります:
- メモリに基づいて実行され、高いパフォーマンス機能を備えています
- キー/値ストレージ構造の分散型で理論上無制限の拡張をサポートし、効率的なクエリ
- は複数の開発言語 API を提供し、既存のビジネス システムとの統合が容易です。
通常、ビジネス システムで分散キャッシュ、集中セッション ストレージ、分散ロック、その他のアプリケーション シナリオに使用されます。
ローカル キャッシュでも分散キャッシュでも、より高いパフォーマンスを確保するために、データを保存するためにメモリが使用されます。コストとメモリの制限により、保存されたデータがキャッシュ容量を超える場合、キャッシュされたデータはキャッシュされる。一般的な削除戦略には、最も古いデータを削除する FIFO、最も最近使用されていないデータを削除する LRU、および最も最近使用されていないデータを削除する LFU が含まれます。
Redis キャッシュ削除ポリシー トリガー
運用環境では、Redis にスワップ動作を許可しません。したがって、最大メモリ使用量は一般に制限されており、Redis では最大メモリ使用量を指定するための構成パラメータ maxmemory が提供されています。
次の構成は有効です:
maxmemory 1000KB maxmemory 100MB maxmemory 1GB maxmemory 0 # 表示不做限制,一般不会用
redis.conf 構成ファイルは次のとおりです
#8 8 Redis キャッシュ戦略
volatile-lru はタイムアウトを設定してデータの中で最も使用頻度の低いデータを削除します;
allkeys-lru はすべてのキーをクエリします 削除データ内で最も使用頻度の低いデータ。これは最も広く使用されている戦略です。
- volatile-random はタイムアウトを設定したデータをランダムに削除します。
- allkeys-random はすべてのクエリを実行します。
- volatile-ttl は、設定されたタイムアウトですべてのデータをクエリし、すぐに並べ替えて、期限切れが近づいているデータを削除します。
- noeviction (デフォルト) に設定されている場合この属性では、削除操作は実行されず、メモリがオーバーフローした場合はエラーが返されます。
volatile-lfu は、有効期限が設定されたすべてのキーから最も使用頻度の低いキーを削除します。;
#allkeys-lfu は、すべてのキーから最も使用頻度の低いキーを削除します。
##LRU アルゴリズム
Redis LRU アルゴリズムは正確な実装ではありません。これは、Redis が best
エビクション候補、つまり過去に最も多くのアクセスを行った候補を選択できないことを意味します。代わりに、少数のキーをサンプリングし、サンプリングされたキーのうち最良の (アクセス時間が最も早い) キーを排除することによって、LRU アルゴリズムの近似を実行しようとします。 ただし、Redis 3.0 以降では、アルゴリズムが改善され、エビクションに適した候補をいくつか選択できるようになりました。これによりアルゴリズムのパフォーマンスが向上し、実際の LRU アルゴリズムの動作にさらに近づけることができます。 Redis LRU アルゴリズムで重要なのは、エビクションごとにチェックするサンプルの数
を変更することで、アルゴリズムの精度を
調整できることです。このパラメーターは、次の構成ディレクティブによって制御されます。maxmemory-samples 5
#上記のグラフを生成するテストでは、Redis サーバーに指定された数のキーを設定します。キーは最初から最後までアクセスされるため、最初のキーが LRU アルゴリズムを使用したエビクションの最適な候補となります。その後、古いキーの半分を強制的に削除するために、さらに 50% のキーが追加されました。
画像には 3 種類の点があり、3 つの異なるバンドを形成していることがわかります。
薄灰色のバンドは、排除されたオブジェクトです。
灰色のバンドは、排除されていないオブジェクトです。
- #緑のバンドは追加されたオブジェクトです。 理論的な LRU 実装では、古いキーのうち前半が期限切れになることが予想されます。 Redis LRU アルゴリズムは、古いキーを
- でのみ期限切れにします。 LRU は、特定のキーが将来アクセスされる可能性を予測するモデルにすぎません。さらに、データ アクセス パターンがべき乗則によく似ている場合、ほとんどのアクセスは LRU 近似アルゴリズムが適切に処理できるキー セット内になります。
欠点: 大量のホット データを生成するために、一定期間内に大量のコールド データにアクセスする可能性があります。 LFU 算法 从 Redis 4.0 开始,可以使用新的最不常用驱逐模式。这种模式在某些情况下可能会更好(提供更好的命中率/未命中率),因为使用 LFU Redis 会尝试跟踪项目的访问频率,因此很少使用的项目会被驱逐,而经常使用的项目有更高的机会留在记忆中。 如果您认为在 LRU,最近访问过但实际上几乎从未被请求过的项目不会过期,因此风险是驱逐将来有更高机会被请求的密钥。LFU 没有这个问题,一般应该更好地适应不同的访问模式。 配置LFU模式,可以使用以下策略: LFU 类似于 LRU:它使用一个概率计数器,称为莫里斯计数器,以便仅使用每个对象的几位来估计对象访问频率,并结合衰减周期,以便计数器随着时间的推移而减少:在某些时候,我们不再希望将密钥视为经常访问的密钥,即使它们过去是这样,以便算法可以适应访问模式的转变。 这些信息的采样与 LRU 发生的情况类似(如本文档的前一部分所述),以便选择驱逐的候选人。 然而,与 LRU 不同的是,LFU 具有某些可调参数:例如,如果不再访问频繁项,它的排名应该以多快的速度降低?还可以调整 Morris 计数器范围,以便更好地使算法适应特定用例。 默认情况下,Redis 4.0 配置为: 这些应该是合理的值并经过实验测试,但用户可能希望使用这些配置设置以选择最佳值。 有关如何调整这些参数的说明可以redis.conf在源代码分发的示例文件中找到,但简单地说,它们是: 衰减时间是显而易见的,它是计数器应该衰减的分钟数,当采样并发现它比该值更旧时。一个特殊值0意味着:每次扫描时总是衰减计数器,很少有用。 计数器对数因子会改变需要多少次命中才能使频率计数器饱和,这恰好在 0-255 的范围内。系数越高,需要越多的访问以达到最大值。根据下表,系数越低,低访问计数器的分辨率越好: 淘汰最近一段时间被访问次数最少的数据,以次数作为参考。 缺点: 1. 最近加入的数据常常容易被剔除,因为其起始方法次数比较少, 2. 如果频率时间度量为 1 个小时,则平均一天每个小时内访问频率 1000 的热点数据可能会被 2个小时的一段时间访问的频率为 1001 的数据剔除掉。可能会出现一些临界值的数据。 建议:了解Redis 的淘汰策略之后,在平时使用尽量主动设置/更新 key 的 expire 时间主动剔除不活跃的旧数据, 有助于提升查询性能 更多编程相关知识,请访问:编程入门!! 以上がRedis キャッシュの削除戦略について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。lfu-log-factor 10
lfu-decay-time 1
+--------+------------+------------+------------+------------+------------+
| factor | 100 hits | 1000 hits | 100K hits | 1M hits | 10M hits |
+--------+------------+------------+------------+------------+------------+
| 0 | 104 | 255 | 255 | 255 | 255 |
+--------+------------+------------+------------+------------+------------+
| 1 | 18 | 49 | 255 | 255 | 255 |
+--------+------------+------------+------------+------------+------------+
| 10 | 10 | 18 | 142 | 255 | 255 |
+--------+------------+------------+------------+------------+------------+
| 100 | 8 | 11 | 49 | 143 | 255 |
+--------+------------+------------+------------+------------+------------+
缓存策略设置建议

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











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

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

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

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

Centosシステムでは、Redis構成ファイルを変更するか、Redisコマンドを使用して悪意のあるスクリプトがあまりにも多くのリソースを消費しないようにすることにより、LUAスクリプトの実行時間を制限できます。方法1:Redis構成ファイルを変更し、Redis構成ファイルを見つけます:Redis構成ファイルは通常/etc/redis/redis.confにあります。構成ファイルの編集:テキストエディター(VIやNANOなど)を使用して構成ファイルを開きます:sudovi/etc/redis/redis.conf luaスクリプト実行時間制限を設定します。

Redisを使用して操作をロックするには、setnxコマンドを介してロックを取得し、有効期限を設定するために有効期限コマンドを使用する必要があります。特定の手順は次のとおりです。(1)SETNXコマンドを使用して、キー価値ペアを設定しようとします。 (2)expireコマンドを使用して、ロックの有効期限を設定します。 (3)Delコマンドを使用して、ロックが不要になったときにロックを削除します。

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

Redisデータの有効期間戦略には2つのタイプがあります。周期削除:期限切れのキーを削除する定期的なスキャン。これは、期限切れの時間帯-remove-countおよび期限切れの時間帯-remove-delayパラメーターを介して設定できます。怠zyな削除:キーが読み取られたり書かれたりした場合にのみ、削除の有効期限が切れたキーを確認してください。それらは、レイジーフリーレイジーエビクション、レイジーフリーレイジーエクスピア、レイジーフリーラジーユーザーのパラメーターを介して設定できます。
