序文
Githubの:https://github.com/yihonglei/nosql-middle
キャッシュを使用する方法についてのプロジェクト、なぜ望ましくない問題が発生する可能性、キャッシュを使用できますか?
1、プロジェクトがどのようにキャッシュを使用するには?
プロジェクトを使用する方法、あなたは実用的なプロジェクトを詳しく説明したシナリオの組み合わせを必要とし、ローカルキャッシュが有用である場合には、使用する方法にもっと注意を払うことができ、実際のプロジェクトで、
Zuosaは、問題を解決するために主に、使用され、問題はありません。
2.なぜキャッシュを使うのか?
ミドルウェアをキャッシュ使用なぜ使用のキャッシングは、これは我々がむしろ群れよりも、使用する前に考えるべきものです。二つの問題を解決するための一般的な使用のキャッシュ、
高いパフォーマンスと同時実行。
高性能
例えば、データのページは以下のアプリになりますが、何もアイドルは常に遊びブラシページに誰かが、500msのかもしれすべてのライブラリをチェックし、ユーザーブラシバック2を放棄します、
それは遅すぎます。今回は、ビジネスケースに応じて、キャッシュにこれらのデータは、2msのは、250倍の性能向上を確認してください。
高い同時実行
現時点では、データベースかもしれない1万流れを、来た場合2000は、システムのピークをキャッチするための時間で、クマに困難であり、単一のQPSにリレーショナルデータベースをのmysql
残業のすべての種類。これらのフローについて、あなたはキャッシュを置くことができ、キャッシュからのステップのプロセスによってステップ、キャッシュメモリがなくなって、それは自然なメモリのサポート高い同時実行です。
3.問題が存在をキャッシュする側は何ですか?
キャッシュとデータベースの不整合:
データの矛盾は、通常のキャッシュで発見された、より多くの古典的な解決策は、時間を読み取ることで、最初のリードキャッシュ、キャッシュではない、学校のデータベース、
データの後キャッシュに入れ、その応答を返しています。あなたは、データベースを更新し、キャッシュを削除したときに更新しました。
雪崩キャッシュ、キャッシュの浸透、絶縁破壊の問題をキャッシュします:
キャッシュ雪崩、キャッシュがハングアップした場合、このようなシステムのピーク時には5000までQPSように、すべてのアクセス要求がヒットしているMySQLは、MySQLがハングアップ運ぶことができませんでした。
あなたはRedisのを使用している場合は、予防プログラムは以下のとおりであります:
事前:高可用性を確保するのRedis、センチネル+からのマスターは、総崩壊を避け、クラスタのRedis。
ehcacheをローカルキャッシュ+ hystrixが制限&ダウングレード、殺されるMySQLの回避:で物事。
その後:永続Redisの再起動後に、データが自動的にディスク、キャッシュされたデータの迅速な復旧からロードされます。
ないハッカー攻撃、多数の要求がシステムをコールする場合は、キャッシュの浸透、キャッシュがキーではなく、データベースにヒットする要求、
場合は、データベースから見つけることができない、デフォルト値、適切なタイムアウトを設定するためのキー、同じキーを使用することは避けてくださいは、アクセス権を持っています、
これは、データベースへのアクセス権を持っています。
同時にすべてのキーに巻き込まれ、すべての有効期限が切れた場合の内訳キャッシュ、キー内訳を設定するキャッシュシステムは、一般的に、一定の有効期限を入れて、すべての要求は、データベースにヒットします。
一般的な予防プログラムは、ビジネスの状況に基づいている必要があります。
データはほとんど変化しない場合は、永続的なデータに設定することができます。
データは、このようなRedisのを使用するなど、非常に頻繁に変更、ロックを取得するために待機して、ロックを配布しない、実行されませある場合、他のスレッドがロックを獲得するように、起こった後にロックが解除されます。
あなたはより頻繁に変更する場合は、キャッシュを更新するために、適切なタイミングまたはタイミングのスクリプトタスクでは、キャッシュは避け破壊状況を満了します。
二つのRedisのデータ型と使用シナリオ?
道のキーと値のストアを使用してRedisのキー。
1、文字列
文字列は、文字列、整数または浮動することができます。
よく使用するコマンド:https://blog.csdn.net/yhl_jxy/article/details/61194024
2、ハッシュ
Redisのハッシュ(ハッシュ)は、複数対の間のマッピングを格納することができます。そして、文字列型、
ハッシュ値は、文字列に格納されてもよいし、デジタル値であってもよいし、ユーザがデジタルのハッシュ値であってもよいです
インクリメントまたは減算動作を行います。ハッシュは、少ないメモリ空間とより便利を取る、オブジェクトを格納するために最も適しています
オブジェクト全体にアクセスします。
よく使用するコマンド:https://blog.csdn.net/yhl_jxy/article/details/61429638
3、セット(順不同コレクション)
セット文字列型は、順不同のコレクションです。セットは、ハッシュテーブルによって達成されます。
よく使用するコマンド:https://blog.csdn.net/yhl_jxy/article/details/67692894
図4に示すように、ソートセット(順序集合)
ソートセットは、セットに基づいてプロパティの順序を増加させることであり、アップグレード版のセットです。
よく使用するコマンド:https://blog.csdn.net/yhl_jxy/article/details/68146099
5、一覧
リストがリスト構造、主な機能のプッシュで、ポップなど、プッシュ、ポップの操作は、一覧表示することができます
リストの先頭は、尾除去要素を添加することができるスタック操作リストまたは待ち行列として実装されてもよいです。
よく使用するコマンド:https://blog.csdn.net/yhl_jxy/article/details/66475963
3 Redisの永続的な方法は何ですか?
永続的ではありません、再起動やハングサービスは、データが失われる場合は、キャッシュデータは、メモリに格納されています。
Redisの持続性(RDB、AOF、混合):https://blog.csdn.net/yhl_jxy/article/details/91879874
RDB:RDBを使用すると、周波数を設定することができ、バイナリスナップショットファイルがdump.rdbファイルに定期的にデータをバックアップ、メモリのデータをRedisのです。
このアプローチの利点は、データが定期的に5Sの欠点である、回復が速くなり、再起動のRedisの高いパフォーマンスを確保するために、スレッドによって更新されていることである、バックアップ設定時間であれば、
次の5S Redisの崩壊に、このデータは数秒間にバックアップされていないいない場合、あなたは失われます。
AOF:Redisのバックアップへの書き込みコマンドAOFバックアップを達成、利点は、データが一般的に失われることはないだろうということで、欠点は、再起動回復が遅すぎるということです
すべての書き込みコマンドは、ファイルをバックアップします。
Redisの4.X永続混合:RDBおよび異なるAOF、2つのバックアップデータの永続的なハイブリッド組み合わせで、バイナリ形式で格納された旧データ、
最新のデータ書き込みコマンドがダンプの回復が急速に回復したときにそのことを、保存されている、速いだけとほとんど失うデータを回復するために、ライトコマンドの少量を行う必要があります。
継続的に完成更新......