Redis-概要

1. Redisのは何ですか 

       Redisの(リモート辞書サーバー)は、キーと値のペアのC、オープンソース(BSDライセンス)の高性能非リレーショナル(のNoSQL)データベースに書かれています。Redisのは、5つの異なるタイプのキーと値の間のマッピングを格納することができます。文字列値がサポートへのキーの唯一のタイプ5のデータ型:文字列、リスト、セット、ハッシュテーブル、順序付きセット。それはRedisのデータがメモリ内に存在している従来のデータベースとは異なり、その読み取りと書き込みの非常に高速なので、広くキャッシュRedisの方向で使用されていることを、毎秒100,000以上の書き込み操作を処理することができ、パフォーマンスは最速知られていますキー値DB。また、Redisのも頻繁に分散ロックのために使用されています。また、Redisのは、トランザクション、永続性、LUAスクリプト、LRU駆動イベント、クラスタのさまざまなソリューションをサポートしています。

2、Redisのどのようなデータ型

    Redisのは、文字列、リスト、セット、ZSET、ハッシュ、会うほとんどの要件を含むデータタイプ、の5種類があります。

   

 

 

 

 

3、RedisのRedisの中に長所と短所のシナリオがあります

利点

 1)良好な読み出しおよび書き込みパフォーマンスを、Redisのは11万回の読み出し速度とすることができる/ S、書き込み速度は81000回/ sです。

 データの永続性、永続性支持AOFとRDBの方法の二種類2)のサポート。

 3)トランザクションをサポートし、すべての操作もサポートしながらRedisの原子は、合併後のいくつかの操作を実行、アトミックのRedisあります。

 リッチ4)データ構造、string型のサポートの値に加えて、ハッシュ、セット、ZSET、リストデータ構造などをサポートしています。

 5)マスターコピーからサポートされている、ホストは自動的にスレーブにデータを同期する、別個の読み出し及び書き込みを行うことができます。

短所

 1)データベースの物理メモリ容量が制限され、それは高性能読み書き質量データ、Redisのは、このように大部分のデータと高性能コンピューティングの操作の少量に制限適切なシーンとして使用することができません。

 2)Redisのは、自動フォールトトレランスとリカバリ、ホストマシンのダウンタイムからの読み取りまたは書き込み要求の遠位端部分になります失敗、またはマシンはフロントエンドのIPを復元するために手動で切り替えを再起動するのを待つ必要性を持っていません。

 3)ホスト・ダウンは、データの前部はまた、IPを切り替えた後、データの不整合を導入し、スレーブに同期させるために失敗したダウン、システムの可用性を低下させます。

 4)オンライン容量拡張をサポートするのは難しいのRedis、オンライン容量拡張は、クラスタ内の上限容量は非常に複雑になります達します。この問題を回避するには、運用、保守担当者はリソースの無駄の多くを引き起こし、十分なスペースのオンラインシステムがあることを確認する必要があります。

 

4.なぜRedisの/なぜ使用キャッシュ

    要約:

   カウンター

文字列は、それによってカウンタ機能を達成する、増加減少することができます。

このデータベースのRedisのメモリ読み取りと書き込みのパフォーマンスは、それが頻繁にカウント数を読み取りおよび書き込み格納するのに適している、非常に高いです。

キャッシュ

最大メモリ使用量と除去の戦略を設定し、メモリへのホットスポットデータは、キャッシュヒット率を確保します。

セッション・キャッシュ

Redisのは、ストアのセッション情報サーバに複数のアプリケーションを統合するために使用することができます。

アプリケーションサーバはもはやストアのユーザー・セッション情報は、もはや状態を持っている場合、ユーザーは、簡単に高可用性とスケーラビリティを実現すること、任意のアプリケーションサーバーを求めることができません。

フルページキャッシュ(FPC)

基本的なセッショントークンに加えて、Redisのも、FPCのために非常に便利なプラットフォームを提供します。

Magentoのと例えば、Magentoのは、プラグインのフルページのキャッシュバックエンドとしてのRedisを使用するを提供しています。また、WordPressのユーザー、パンテオンは素晴らしいプラグインWP-Redisのを持って、このプラグインは、あなたが訪問したページの読み込みの最速のスピードであなたを助けることができます。

ルックアップテーブル

例えばDNSレコードのRedisのストレージのために非常に適しています。

同様のルックアップテーブルとキャッシュ、Redisのも、高速検索機能を使用します。しかし、コンテンツのルックアップテーブルは、失敗することはできませんし、キャッシュがデータの信頼できる情報源ではないので、キャッシュの内容は、失敗する可能性があります。

メッセージキュー(機能パブリッシュ/サブスクライブ)

リストは二重にリンクされたリストで、メッセージはlpushとRPOPで読み書きすることができます

しかし、カフカ、その上のRabbitMQのメッセージング・ミドルウェアとの最適な使用。

達成ロック分散

分散シナリオでは、ロックは、複数のノード上のプロセスを同期化するために、スタンドアロン環境で使用することができません。

あなたはRedisのを使用することができ、分散ロックを達成するSETNX順は、加えて、あなたはまたRedLockが正式実装をロックする分散使用することができています。

他の

セットには、共通の友人などを達成するために、交差点、労働組合、およびその他の操作を実現することができます。

ZSETは、ランキングや他の機能を実現するために、秩序ある動作を実現することができます。

概要II:

Redisのは、他のキャッシュに比べ、非常に大きな利点は、それが複数のデータ型をサポートすることで、そこにあります。

そのようなシナリオID、詳細の説明文字列データ型、文字列、最も単純なKVのhashhash記憶フォーマット、フィールドの値と値。ソートセットを処理して、リストの単純なリスト、オーダーリスト、または順不同リスト、交差点や労働組合のための高速な検索を設定し、データの挿入一端サポート、違いはセットを注文しました

実際には、機能の上記のデータ型によって、基本的には、適切なアプリケーションシナリオを考えることができます。

適当string--最も単純KVストレージは、このタイプのメモリを使用するように、同様のストレージ構造、等メッセージ認証コード、コンフィギュレーション情報を、memcachedを。

IDまたは一意識別子のhash--一般キー、値その細部に対応しています。このような商品情報、個人情報の詳細、ニュースやその他の詳細など。

list--リストため順序付けされ、順序付けられたデータの固定された数に対応するデータを格納するためのより適切。地方テーブル、ディクショナリ表と上のように。***最新の、メッセージキュー、およびように:リストが注文されているので、のような書き込み、時間に応じてソート。

set--は、単に、そのようなマイクロブログにおける人の友人として、IDリストモードとして理解することができる牛のように設定されている場合、SETは、2つの交差点、及び組合、差分演算を提供することができます。たとえば、次のように一緒に友人2人を見つけて、上のようにします。

ソートされたSet--は、セットの拡張バージョンで、パラメータが自動的にスコアの値に基づいてソートされるスコアを追加します。他のより適切に類似していないが、挿入、トップ10の時間に応じてデータをソートします。

より多くの平均的なキャッシュデータ構造以外に、ないリレーショナルデータベースとしてRedisの少ない複雑なデータ構造が、だけでなく、シーンの多くのために、前述したように。ヘルプ開発効率が効果的にRedisののパフォーマンスで利用することができる強化だけでなく、それぞれのビジネスシナリオのためのデータ構造を理解します。

 

 

5.使用がキャッシュとして代わりにマップ/グアバのRedisのはなぜ?

  主に「高パフォーマンス」と「高い同時実行」から、これら二つの点では、この問題を見て。

  高性能:

   データベース内のいくつかのデータへのユーザーの最初の訪問の場合。それは、ハードディスクから読み取られるため、このプロセスは、遅くなります。ユーザによってアクセスされるデータの数は、データへのアクセスがキャッシュから直接取得することができるので、次回、キャッシュ内に存在します。キャッシュメモリは、操作の直接の操作なので、スピードはかなり速いです。場合は、データベースの変更で対応するデータの後に、同期データがキャッシュに対応する変更されました!

 

 

 高い同時実行:

我々はどこへ行くデータベースキャッシュ内のデータの一部を移す検討することができますので、キャッシングは耐えることができます直接操作要求は、データベースに直接アクセスするよりもはるかに大きいので、ユーザは、データベースを経由せず、直接ここにキャッシュへの要求の一部となります。

 

 

キャッシュは、ローカルキャッシュと分散キャッシュに分かれています。Javaへ、例えば、独自のマップやグアバのローカルキャッシュが実装されて使用することが、最も重要な特徴は、破壊JVMのライフサイクルが終了したとして、軽量かつ高速であり、かつ複数のインスタンスでは、各インスタンスキャッシュのジャーナルを維持するために必要な、キャッシュには一貫性がありません。複数のインスタンス場合、分散キャッシュ、共有データ・キャッシュ、キャッシュの一貫性の各インスタンスと呼ばれるようなmemcachedのRedisの又は使用。欠点は、高可用性のRedisやmemcachedのサービスを維持する必要性、より複雑な全体手続きフレームワークです。

 

6、Redisのなぜそんなに速いです

  1)完全にメモリに基づいて、要求のほとんどは非常に速く、純粋なメモリ操作です。メモリに格納されたデータが、HashMapのと同様に、HashMapの利点は、O、時間およびルックアップ操作の複雑さである(1)。

  簡単2)データ構造、データ操作はRedisのデータ構造が適合するように設計された、簡単です。

  3)シングルスレッド、不要なコンテキストスイッチと競争条件を避けるために、何のマルチプロセスまたはマルチスレッドスイッチのリードはCPUが消費されないされ、ロックに関するさまざまな問題を考慮する必要はありませんが、ロック操作をリリースするロックが存在しない、無パフォーマンスの消費によって引き起こされる可能デッドロックからです。

  4)複数のI / O多重化モデルの使用、ノンブロッキングIO。

  5)クライアント間の通信を達成するために、異なる基礎となるモデル、それらの間の基本的なアプリケーションプロトコルを使用しての方法は、その後、一般的なシステムコールシステムの機能を移動するためにいくつかの時間を無駄になりますので、RedisのVMは、自分の直接のメカニズムを構築し、同じではありませんそして、要求。  

7.持続Redisの持続性とは何ですか?

   持続性は、サービスのダウンタイムメモリデータの損失を防ぐために、ディスクに書き込まれたデータのメモリです。

 

8.永続化メカニズムRedisのは何ですか?彼らの長所と短所?

    

Redisのは、二つの永続性メカニズムRDB(デフォルト)を提供し、AOFメカニズム:

RDB:スナップショットの頭字語は、Redisのデータベースです

RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。

 

9、如何选择合适的持久化方式 Redis持久化数据和缓存怎么做扩容?

10、过期键的删除策略 Redis的过期键的删除策略 Redis key的过期时间和永久有效分别怎么设置?

11、内存淘汰策略 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据 Redis的内存淘汰策略 Redis的内存用完了会发生什么?

12、Redis如何做内存优化?

13、Redis回收进程如何工作的?

14、Redis回收使用的是什么算法?

15、线程模型 Redis线程模型 事务 怎么理解Redis事务? 

16、Redis事务 分布式问题 Redis实现分布式锁 如何解决 Redis 的并发竞争 Key 问题 分布式Redis是前期做还是后期规模上来了再做好?为什么?

17、分区 Redis是单线程的,如何提高多核CPU的利用率?

18、为什么要做Redis分区? 你知道有哪些Redis分区实现方案? Redis分区有什么缺点?

19、常用工具 Redis支持的Java客户端都有哪些?官方推荐用哪个?

20、Redis和Redisson有什么关系?

21、Jedis与Redisson对比有什么优缺点?

22、其他问题 Redis与Memcached的区别 Redis如何做大量数据插入?

24、如何保证缓存与数据库双写时的数据一致性?

25、Redis常见性能问题和解决方案?

  

おすすめ

転載: www.cnblogs.com/XiangHuiBlog/p/12048498.html