tencent cloud

Tencent Cloud Distributed Cache (Redis OSS-Compatible)

キャッシュの位置付けと削除ポリシー

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-20 18:20:58
AI翻訳
Distributed Cacheは、Redis、Valkey、Memcachedなどの複数のストレージエンジンをサポートし、データをメモリに保存することで、マイクロ秒レベルの読み書き応答を実現します。ただし、メモリリソースは有限であり、停電後は永続化できないため、使用前に2つの前提を明確にする必要があります:キャッシュインスタンスは永続化データベースではなくキャッシュとして位置付ける必要があります、およびメモリが満杯になった後のサービス中断を防ぐために、合理的なメモリ追い出しポリシーを設定する必要があります。本書は、キャッシュ使用の基本原則とメモリ追い出しポリシーの選定に関する推奨事項を定義します。

一、キャッシュ位置付けの原則

キャッシュインスタンスはキャッシュとしてのみ使用します。キャッシュインスタンスはすべてのデータをメモリに保存するため、アクセス速度は速いですが、メモリは停電後にデータを永続化できません。キャッシュインスタンスを永続化データベースとして使用すると、データ損失が発生する可能性があります。

二、単一データソースではない原則

キャッシュインスタンスをキャッシュとして使用する場合、キャッシュミスが発生することがあるため、唯一のデータソースとして使用することはできません。キャッシュインスタンスの呼び出しで例外が発生した場合やキャッシュミスが発生した場合は、バックエンドデータベース(MySQL、PostgreSQLなど)にフォールバックしてクエリを実行し、ビジネスデータの整合性を確保する必要があります。

三、Key削除の原則

ビジネスタイプに応じて、適切なメモリ淘汰ポリシー maxmemory-policy を設定します。デフォルトポリシーは noeviction(キーを削除しません)であり、メモリが満杯になるとすべての書き込み操作を拒否し、OOMエラーを返します。インスタンス作成後すぐに淘汰ポリシーを変更し、メモリ満杯によるサービス中断を回避することをお勧めします。パラメータの設定方法については、インスタンスパラメータの管理 を参照してください。

3.1 削除アルゴリズムの説明

略語
正式名称
説明
LRU
Least Recently Used
最も長く使われていないものを優先的に削除します。各キーが最後にアクセスされた時刻を記録し、最も長くアクセスされていないキーを優先的に削除します。
LFU
Least Frequently Used
最も使用頻度が低いものです。各キーがアクセスされた回数を記録し、アクセス回数が最も少ないキーを優先的に削除します。
TTL
Time To Live
生存時間です。キーが期限切れになるまでの残り時間を測定します。

3.2 選択可能なメモリ削除ポリシー

ポリシー
適用範囲
淘汰ルール
allkeys-lru
すべてのキー
最も長く使われていないキーを優先的に削除し、十分な空き容量が確保されるまで続行します。
allkeys-lfu
すべてのキー
アクセス回数が最も少ないキーを優先的に削除し、十分な空き容量が確保されるまで続行します。
allkeys-random
すべてのキー
キーをランダムに削除し、十分な空き容量が確保されるまで続行します。
volatile-lru
有効期限を設定したキー
TTLが設定されたキーの中で、最も長く使われていないキーを優先的に削除します。
volatile-lfu
有効期限を設定したキー
TTLが設定されたキーの中で、アクセス回数が最も少ないキーを優先的に削除します。
volatile-ttl
有効期限を設定したキー
TTL値が小さい(つまりまもなく期限切れになる)キーを優先的に削除します。TTLが設定されたキーがない場合は、noevictionポリシーにフォールバックします。
volatile-random
有効期限を設定したキー
有効期限が設定されたキーをランダムに削除します。
noeviction
—
データを一切削除せず、すべての書き込み操作を拒否し、エラー情報"(error) OOM command not allowed when used memory"を返します。このとき、読み取り操作にのみ応答します。

3.3 削除ポリシー選定の推奨事項

説明:
キャッシュインスタンス自体に永続化データを保存することは推奨されません。volatile-lru は混合シナリオにおける代替案としてのみ使用します。
シーン
推奨戦略
説明
純粋なキャッシュとして使用(推奨)
allkeys-lru
すべてのキーは淘汰される可能性があります。最も長くアクセスされていないキーが優先的に削除されます。使用頻度が最も低いキーはその後のヒット率も最も低く、淘汰後も業務への影響は最小限です。
一部のキーは永続的に保持する必要があります。
volatile-lru
有効期限が設定されたキーのみを淘汰し、有効期限が設定されていないキーには影響しません。キャッシュデータ(TTL設定あり)と設定データ(TTL設定なし)が混在するシナリオに適しています。
キーのライフサイクルを正確に制御する必要があります。
volatile-ttl
まもなく期限切れになるキーを優先的に淘汰します。データの時効性に明確な要件があるシナリオに適しています。
正しい例:インスタンス作成後、淘汰ポリシーをデフォルトの noeviction から allkeys-lru に変更します。
現在の淘汰ポリシーを確認します。
CONFIG GET maxmemory-policy

allkeys-lru に設定します。
CONFIG SET maxmemory-policy allkeys-lru
悪い例: 以下の設定は問題を引き起こす可能性があります。
設定方法
問題説明
デフォルトのnoevictionを使用し、変更していません。
メモリが満杯になると、すべての書き込み操作が拒否され、OOMエラーが返され、サービスへの書き込みが中断されます。
すべてのキーにTTLが設定されていないにもかかわらず、volatile-lruを使用しています。
volatile-*ポリシーは、有効期限が設定されたキーにのみ適用されます。すべてのキーにTTLが設定されていない場合、noevictionと同等になり、メモリを解放できません。
allkeys-randomを使用して優先度付きのキャッシュデータを処理します。
ランダム淘汰はアクセス頻度を区別しないため、高頻度でアクセスされるホットキーを誤って削除し、キャッシュヒット率の低下を招く可能性があります。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック