まず、何のRedisのこと?
Redisのタイプ、高性能のキーと値のデータベースをログに記録することができ、メモリの持続性に基づいて、オープンソース使用ANSIC言語、ネットワークのサポート、シングルスレッドプロセスです。
Redisの利点:
- Redisのは、あなたが再利用できる場合に、メモリ内のデータがディスク、負荷へのリブートに保存することができ、データの永続性をサポートしています。
- また、ストレージ・リスト、セット、ZSET、ハッシュおよび他のデータ構造を提供しながら、Redisのは、簡単なキーと値のデータ型をサポートしています。
- Redisのバックアップデータ、すなわち、データバックアップマスタ・スレーブモードをサポートします。
二、Redisのいくつかのモデルがありますか?
3つのタイプがあります:
①シングルノード・モード(Redisの構成)。
(一次twoから構成される)②マスタ・スレーブモード。
センチネルモード③(プライマリ2点から配置された3つの)
注:裁判官プライマリ・インスタンスの統一障害が少なくとも二つのセンチネル・プロセスを必要とし、非遵守の数、できないフェイルオーバー
第三に、プロジェクトに適して使用されているキャッシュ技術、RedisのとMemcachedのおよびその他のNIOの現在の数のため?
- より多くの主流のキャッシュ技術は、RedisのとMemcachedの、キャッシュは、視点からだけでヒットしている、Memcachedの方が高い、かもしれRedisのとMemcacheのギャップは大きくないですが、Redisのは、より強力な番号を提供し、読み込み、書き込み速度も非常にあります速いです。我々は、データをキャッシュするためのRedisを選んだので。
- メモリにキー値の形式でデータバッファをRedisの、データストレージタイプ(文字列、ハッシュ、リスト、セット、にSortedSet)を数多く提供して、それ自体の機能は永続的(二種類:RDB、AOF)を提供し、また、あなたは、ダウンタイムRedisの際にデータの損失を防ぐために、ディスク(SAVE Redisのコマンドは、現在のRedisのデータベースのバックアップを作成します)にデータをバックアップすることができます。(定期的にディスクに書き込まれたデータを更新するか、追加のログファイルを書き込む動作を変更するために、そしてこれに基づいてマスタースレーブ(マスタとスレーブ)の同期を実現します)。
四、Redisの理由は、キャッシュを行いますか?どのような実用Redisのプロジェクトの目的を?するときは、使用できますか?
1)Redisのは、キーと値のNoSQLデータベースの形態です。あなたはすぐに探しkey're見つけることができます、との値が取り出されます。Redisの全てのデータがメモリに配置され、アクセス速度が非常に速く、一般にバッファ使用のために使用されます。
2)プロジェクトで使用される一般的にキャッシュとして使用Redisの、キャッシュされたオブジェクトは、データベースアクセスの効率を改善するための圧力を低減することです。
3)インターネットであれば、非常に同時読み取りを投影する関係や、大量のデータの存在がキャッシュRedisのとして使用することができるように。もちろん、Redisのは、キャッシュに加えて、実際のビジネスシナリオに応じて決定的なのRedisすることができ、豊富なデータ型を提供します。例えば、使用してRedisのは、順序番号生成、トラフィックカウンタ、タスクキュー、リーダーボード、ユーザーのショッピングカートの情報を保存するというように。
- 1. 2.文字列のハッシュリスト3. 4. 5.順序付きコレクションセット:サポートにデータストレージの5種類のRedis
ハッシュことを特徴としている何[1]?文字列の利益率がありますか?
タイプハッシュより州文字列のハッシュ・メモリは、オブジェクトを記憶するより少ないメモリを消費し、オブジェクト全体へより簡単にアクセスすることができます。あなたがのハッシュを格納するオブジェクトを作成するとzipmapで始まる(も小さなハッシュとして知られています)。そのメモリが継続され、各欠失がメモリを再割り当てし、メモリの断片化の状況が存在しません。
五、Redisのクラスタは、1つのノードがどのように行うためにダウンしましたか?解決策は何ですか?
- クラスタのRedis:一般的には、プライマリサーバから少なくとも2台のサーバです!
- クラスタマスターがぶら下がっRedisの場合は、サーバ間の関係(センチネルモードおよびトランキングモード)はありません
六は、データの整合性を確保する方法をRedisの?
サーバがクライアントの要求を処理するシングルスレッドさのRedis、そのクライアントは、サーバの実行の直列化され、その要求のサーバーであり、並行性の問題。しかし、ビジネス面ではなく、Redisのの同時操作とキーの状況があります。だから、作る方法をクライアントがBのクライアントがあることを知っている、それは操作したい操作問題キーを、それが議論することが必要になります。
解決策1:
- 同時操作の直列化を確実にするために操作されるキーをロックすることにより。
例:
②使用Redisのトランザクション操作に使用MULTI、DISCARD、EXECに、クライアントが連載しました。
セブン、どのようにデータベースのMySQLとRedisのを同期するには?
背景:異常は、データベース、データベースのデータとロールバックが、その後のデータ・キャッシュを発生し、減少インベントリ下Redisの場合、
ソリューション:
- キャッシュに有効期限を設定し、データベースを更新するために、キャッシュを更新し、(キャッシュの内容を更新することはお勧めしません、キャッシュ間の設定を有効期限が切れる);リアルタイム同期方式、すなわち、クエリキャッシュはキャッシュにその保存DBから、別のクエリを見つけることができません
- 高い同時実行の下では、非同期キューなどの同期は、生産と消費のメッセージを処理カフカメッセージングミドルウェアを採用することができます。
- キー:使用アリ同期ツール運河、運河の実装では、監視DB bitlogログキャッシュ更新トリガの更新、同期機構シミュレーションMySQLのスレーブとマスターであります
八、あいまい検索をしてRedisの?
Redisのが許可されている3つのワイルドカードあいまいクエリは、次のとおりですか。*、[]?
どこで:
- *:文字のワイルドカード任意の数
- ?:ワイルドつの文字
- []:括弧内の1つのワイルドカード文字
特に練習のアイデア:
- 条件は、キーストレージZSETとして照会されます
- StringRedisTemplate.keysを呼び出し、(パターン)を取得する場合
九、Redisの実用的なアプリケーションのシナリオ?
[1]は項目の最新のリストを示してい
次のステートメントは、より多くのデータと、クエリは間違いありませんが遅くなり、最新のプロジェクトを表示するために使用されます。
各コメントには、データベース内で一意の増分IDフィールドを持っていると仮定。私たちは、Redisの、新しいレビューが公開された各時間のテンプレートを使用したホームページやコメントページを作成するには、タブを使用することができ、我々は、IDのRedisのリストに追加されます:
唯一、最新の5000のレビューを保存する必要があり、我々が行うためにここにいるRedisのは非常に簡単です。Redisのでは当社の最新の居住者IDに更新されたされたキャッシュを、使用して。私たちは常にRedisのを聞いてきますID機能を得るように、しかし、我々は、5000 ID以上に制限していませんでした。のみを開始/ countパラメータは、この時間の範囲を超えている、唯一のデータベースにアクセスする必要があります。
私たちのシステムは、「リフレッシュ」キャッシュなどの伝統的な方法のように、Redisのインスタンス情報は常に一貫していません。SQLデータベース(またはハードディスク上のデータベースの他のタイプ)のみのホームページまたは最初のページには、ハードドライブ上のデータベースへのトラブルではないコメントがある一方で、「非常に遠く」のデータを取得するために、ユーザーのニーズにトリガされます。
[2]チャートアプリケーション、動作がTOP Nを取り
最新のNデータ操作時間加重を取り、これは、このような単位のソートトップとして、重みのための条件である、我々は実行するためにソートセットを必要とし、あなたを設定します。この時間は、のソートセットに値をソートしたいですスコアは、特定のデータは、設定値、コマンドZADDを実装する必要がある時間に対応します
[3]ゲームリーダーボード
たとえば、あなたが通常必要スコアに基づいて、Facebookのゲーム:
- リストの上位100選手が得点
- リスト、ユーザーの現在の世界ランキング
- Redisのためのこれらの操作は、あなたが毎分が新たなスコアの数百万人があるだろう、何百万ものユーザーを持っている場合でも、ケーキの一部です。モードはつまり、新しいスコアを取得するたびに、私たちはこのコードを使用します。
あなたはそれはあなたが設計方法によって異なり、ユーザ名を置き換えるためにユーザーIDを使用することができます。ユーザーは、トップ100のスコアを取得する非常に簡単です:
類似したユーザー、世界中のランキングのみ: