ホームページ  >  記事  >  データベース  >  Redis メモリがいっぱいになった場合の解決策

Redis メモリがいっぱいになった場合の解決策

尚
転載
2020-04-30 09:10:062682ブラウズ

Redis メモリがいっぱいになった場合の解決策

Redis メモリは完全なソリューションです:

1、メモリを増やします;

2、メモリ削除戦略を使用します。

3、Redis クラスター。

2 番目と 3 番目の解決策に焦点を当てましょう:

2 番目の解決策:

redis 設定構成ファイルが maxmemory パラメータで制御できることはわかっています。利用可能な最大メモリ サイズ (バイト)。

それでは、必要なメモリが maxmemory を超えた場合はどうすればよいでしょうか?

このとき、構成ファイル内の maxmemory-policy が機能します。

デフォルト値は noeviction です。

以下に、使用可能なメモリが不十分な場合に Redis キーを削除するための除外ルールを示します。

Redis メモリがいっぱいになった場合の解決策

#LRU アルゴリズム、最も最近使用されていないアルゴリズム、最も最近使用されていないアルゴリズム。つまり、最も最近使用されていないキーがデフォルトで削除されます。

しかし、注意しなければならないことが 1 つあります。 Redis は、すべてのキーのうち最も最近使用されていないキーを正確に削除するのではなく、ランダムに 3 つのキーを選択し、これら 3 つのキーのうち最も最近使用されていないキーを削除します。

次に、数値 3 を設定することもでき、対応する場所は構成ファイル内の maxmeory-samples です。

3 番目の方法:

Redis は単一のインスタンスのみをサポートします。メモリ 通常 10 ~ 20GB まで。 100 ~ 200 GB のメモリを備えたシステムの場合、クラスタリングを通じてサポートする必要があります。

Redis クラスターには、クライアント シャーディング、プロキシ シャーディング、RedisCluster の 3 つの方法があります。

クライアント シャーディング

ビジネス コードによるルーティングの実装

利点: シャーディング アルゴリズムを自分で制御でき、プロキシよりもパフォーマンスが優れています。

欠点: 維持コストが高く、拡張/縮小などの運用保守作業は独自の研究開発が必要です

エージェント シャーディング

エージェントはビジネス プログラムからデータ リクエストを受信し、ルーティング ルールに従ってこれらのリクエストを正しい Redis インスタンスに分散し、ビジネス プログラムに返します。 Twemproxy や Codis などのミドルウェアを使用して実装されます。

メリット: 運用保守が容易、Redis インスタンスへの接続方法を気にする必要がない

デメリット: パフォーマンスを消費する(約20%)、スムーズに拡張できない/縮小し、データを移行するためにスクリプトを実行する必要があるため、不便です (Codis は自動リバランスを実現するために Twemproxy に基づいてプリシャーディングを最適化および実装します)。

Redis クラスター

利点: 公式クラスター ソリューション、セントラル ノードなし、クライアントへの直接接続、優れたパフォーマンス

欠点: ソリューションはあまりにも重い、スムーズに拡張/縮小できない、対応するスクリプトを実行する必要がある、不便、新しすぎる、対応する成熟したソリューションがないケース

Redis の詳細については、

redis 入門チュートリアル##を参照してください。 # カラム。

以上がRedis メモリがいっぱいになった場合の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。