Redisのを学習する前に、我々は最初のNoSQL(非リレーショナルデータベース)を見てする必要があります。一般に、非リレーショナル・データベースのデータは、データベース内のオブジェクトとして格納され、オブジェクト間の関係は、各オブジェクト自体の特性によって決定されることをいいます。
なぜNoSQLの?
(1)高性能-高同時読み取りおよび書き込み
(2)巨大なストレージ - 効率的な大容量データストレージとアクセス
(3)高いスケーラビリティ&& HIG可用性 - 高いスケーラビリティと高可用性
四つの分類のNoSQLデータベース:
(1)キー(キー-値)ストレージ
(2)カラムストア
(3)文書データベース
(4)グラフデータベース
NoSQLの機能:
拡大する(1)簡単:データベースの多くの種類、非リレーショナル
(2)柔軟なデータモデル:保存されたデータモデルを構築する必要はありません
(3)大量のデータを、高性能:高性能読み取りおよび書き込みを
(4)状況:多くのフレームに統合することができます
リモート辞書サーバ(Redisの)がタイプを記録することができる持続性メモリに基づいて、キー値記憶システム、BSDプロトコル、ネットワーク・サポートのサルヴァトーレサンフィリッポによって書かれて、キーと値のデータベース、典型的には、サーバのデータ構造と呼ばれます値(値)は、文字列、ハッシュ、リスト、セット、ソートセット他の種類のことができますので。
Redisのアプリケーションのシナリオ:
(1)キャッシュ:クエリデータ
(2)タスクキュー:スパイクを買います
(3)ウェブサイトの統計情報
(4)データ処理が満了:ミリ秒の精度
(5)アプリケーションランキング
(6)分散クラスタアーキテクチャ別セッション
Redisのキーと値のキャッシュおよびその他の製品は、以下の3つの特徴があります。
Redisのサポート永続データ、メモリ内のデータをディスクに保存することができます(書き込み時のデータの損失があるかもしれません)、時間が再びロードすることができ、再起動使用しています。
また、ストレージ・リスト、セット、ソートセット、ハッシュおよび他のデータ構造を提供しながら、Redisのは、簡単なキーと値のデータ型をサポートしています。
Redisのバックアップデータ、すなわち、データのバックアップマスタ・スレーブモードをサポートします。
Redisの接続
Jedis Redisの関係者はJava開発ツールの接続を推奨しています。
IPアドレスとポートを設定します// 1.
Jedis Jedisはjedis新しい新=( "localhost"を、6379);
//データ2.保存
jedis.set( "名前"、 "ジョー・スミス");
文字列jedis.getヴァル=を( "名「);
System.out.printlnは(ヴァル);
//閉じる3.リソース
jedis.close();
接続プールに基づいた接続
//接続プールの構成は、オブジェクトを取得
新しい新しいJedisPoolConfigの設定をJedisPoolConfigを=();
//接続の最大数を設定
config.setMaxTotal(30);
//アイドル接続の最大数を設定
config.setMaxIdle(10)、
最大待機時間を設定//
config.setMaxWaitMillis(1000);
試してみる(
//接続プール取得
JedisPool jedisPool =新新JedisPool(設定を、 "localhost"を、6379);
Jedis jedis jedisPool.getResource =();
){
jedis.set( "NAME1"、 "00001");
文字列ヴァル= jedis .get( "NAME1");
のSystem.out.println(ヴァル);
}キャッチ(例外E){
e.printStackTrace();
}
のRedisの利点
非常に高い性能:Redisの最大読み取り速度は11万回/ sであり、書き込み速度は81000回/ sです。
ストレージ用の豊富なデータタイプ。
操作原子性:すべての操作はアトミックRedisのであり、MULTIおよびEXEC命令で包まアトミック操作を複数サポートしています。
Redisのインストールをダウンロードしご検討くださいhttps://www.runoob.com/redis/redis-install.htmlを
窓 :
(例:D:\ Redisの)インストールディレクトリをRedisのためのディレクトリにCMDウィンドウのCDを開きます。実行:Redisの-SERVER.EXEは、サーバを起動redis.windows.conf、あなたもクリックできるredis.window.confをサーバーを実行しますそれは実行されます。
アクセスサーバー:Redisの-cli.exe -h 127.0.0.1 -p 6379:もう一つは、次のRedisのインストールディレクトリの実行に切り替えるには、cdコマンドを使用して、(オリジナルのオープンCMDウィンドウ閉じていない、またはサーバーにアクセスすることはできません)CMDウィンドウを起動します
設定Redisの
ファイル名redis.windows.conf下のインストールディレクトリにあるのRedis Redisのコンフィギュレーションファイル、またはあなたは、configコマンドによって設定項目を表示または設定することができます。
次のようにRedisのCONFIGコマンドのフォーマットは次のとおり
Redisの127.0 0.1 :. 6379> CONFIG GET CONFIG_SETTING_NAME
あなたは使用することができ、すべての設定項目を取得するための番号をします。config取得します
Redisのストレージデータ型
文字列(文字列):文字列の最も基本的なタイプは、Redisの文字列は、JPGの画像やオブジェクトのシーケンスとして任意のデータを含めることができることを意味し、Redisの、バイナリセーフです。512メガバイトの最大記憶キー。
(1)預金:設定KEY1の値1
(2)撮影:KEY1を取得
(3)を取得し、設定します。GETSETキー1の値2
(4)削除:デルKEY1を
(5)インクリメント:INCRキー1(一度インクリメントKEY1値、値が存在しない場合、その後、最初の値が0に設定され、その後、1だけ増分;×××変換されない場合、エラーメッセージが返されます。)
(6)減少:DECR KEY1は(値は、次に1だけデクリメントされ、その後、最初の値が0に設定され、存在しない場合はデクリメントされた値をKEY1、エラーメッセージが返され、×××変換されない場合)。
(7)インクリメント値:incrbyのKEY1のVAL1(KEY1の値が存在しない場合、その後、最初の値が0に設定され、値VAL1をインクリメントし、インクリメントVAL1である。×××変換されない、エラーメッセージが返された場合)。
(8)の値をデクリメント:decrbyのKEY1のVAL1(この値が存在しない場合、最初の値が0に設定され、その後、VAL1をデクリメント、値VAL1のKEY1をデクリメントし、変換されない場合×××、エラーメッセージが返されます。)
(9)一緒に文字列を置く:KEY1のVAL1を追加(文字列の連結は、文字列をステッチ後Redisの値VAL1のKEY1に、スプライシング後の文字列の長さを返し、そうでない場合、それはVAL1に作成されます)
- ハッシュ(ハッシュ):キーと値のペアのハッシュタイプ文字列フィールドの値とのマッピングテーブルのセットで、ハッシュは、オブジェクトを格納するのに特に適しています。
(1)預金:預金キーと値のペア - 格納されたキーと値のペアのHSET KEY1 FIELD1値1の複数 - hmset KEY1 FIELD1値1フィールド2値2 ...
(2)撮影した:単一のキーを取る - hgetキー1フィールド1、複数のキーを取る - hgetallキー1 - hmgetキー1フィールド1フィールド2 ... ...すべてのキーKEY1オブジェクトを取ります
(3)削除:複数のキーと値のペアを削除 - hdelはキー1フィールド1フィールド2 ...すべてのデルKEY1を削除します。
- 一覧(リスト):リストでは、文字列の単純なリスト、ソート挿入順です。
(1)両末端に加えた:左 - lpush LIST1値1右 - rpush LIST1 VALUE2を
(2)閲覧:LRANGEリスト1 START_NUMBER end_number(numが負になることができ、負の数は、尾の先頭からのインデックス位置を示します)
(3)ポップアップの両端:左 - 右LPOP LIST1 - RPOP LIST1
(4)長さ:llen LIST1
(5)挿入:lpushx LIST1 VALUE1(LIST1左に挿入する場合にのみ存在する)rpushxのLIST1値1(KEY1場合のみ、右側のインサートの存在)
; count_number <0は、右から数を表す場合、lrem LIST1 count_number値1(count_number> 0は、左側から番号を表す場合LIST1は、count_numberに値1要素の値を削除した:(6)指定された要素の価値を削除count_number = 0の場合、すべての値の値1は、すべての要素を表します。)
(7)指定された位置に要素を追加:要素が指定された場所に挿入されている - LSET LIST1指定された要素の前に挿入された値1の要素INDEX1 - linsert LIST1指定された要素の後に値1と値2の挿入要素の前 - linsert LIST1値1と値2の後
(8)尾部要素の除去LIST1とLIST2の先頭に付加:rpoplpush LIST1 LIST2
- コレクション(セット):セットのコレクションを設定し、重複要素が許可されていない、文字列型の順不同のセットです。キーの集合に対応する文字列を設定するために要素を追加、成功を返し要素が設定されている場合は0を返し、存在しないセットが返された場合、エラーに対応するキー。
(1)存:SADD SET1をvalue1 value2の...
(2)閲覧:smembers SET1
(3)削除:SREMのSET1値1値2を...
(4)要素がコレクション内に存在するか否かを判定する。sismemberのMYSET値1(存在する場合、1を返し、存在しない場合は0を返します)
(SET1が戻り要素中に存在するSET2には存在しない)sdiffのSET1 SET2を:(5)の差が設定します
(6)交差点:焼結SET1をSET2(SET2が存在し、同時にSET1要素を返します)
(7)と設定:sunion SET1 SET2(リターンSETL、SET2セットが自動的にディエンファシスであろう)
番号(8)取得の要素:SCARDのSET1
srandmemberのSET1:(9)ランダム要素を返します
sdiffstore SET1 SET2 SET3:別のセット(SET3)に格納されている(10)は、2個のセット(SET1、SET2)差分セット
sinterstore SET1 SET2 SET3:で交差点(SET3)の別のセットに格納されている(11)は、2個のセット(SET1、SET2)
sunionstore SET1 SET2 SET3:別のセット(SET3)に格納されている(12)は、2個のセット(SET1、SET2)と組
- 順序集合ZSET(ソートセット):ZSETと文字列型要素のコレクションとして設定され、重複したメンバーを許可していません。違いは、ダブルスコアは要素の各タイプに関連付けされることです。メンバーのスコアをソートするために設定されているのRedis。
(1)添加元素:zadd SORT1 SCORE1値1 score2値2 ...は(追加の要素の数を返します)
(2)の要素を取得する:要素スコアを取得 - エレメントのzscore SORT1 VALUE1得る数 - zcard SORT1
zremrangebyrank SORT1 num1をnum2のスコア範囲によって削除 - - zremrangebyscore SORT1 SCORE1 score2 zrem SORT1をvalue1 value2の...クリア:(3)の要素を削除します
(4)の範囲を見つける:ソートNUM1 NUM2表示スコアZRANGE - のzrange SORT1 NUM1 NUM2 withscores(小大部分に)zreverange SORT1 NUM1 NUM2 withscores上昇検索におけるスコアにより(降順スコア) - zrangebyscore SORT1 NUM1 NUM2プレスzrangebyscore SORT1 num1をnum2のwithscores見つけるためのページ - - zrangebyscore SORT1 num1をnum2の制限START_NUMのstop_num小規模から大規模までのスコア、およびスコアを表示して下さい
(5)変形スコア:zscore SORT1 SCORE1 VALUE1
(6)統計的スコア範囲の要素の数:ZCOUNT SORT1 SCORE1 score2
Redisののキーの一般的な操作は、
キー*:(1)すべてのキーを取得します
キーのプレフィックス:(2)最初の文字キーを取得?
(3)キーを削除します。del KEY1 KEY2のを...
KEY1(1-リターンが存在し、0は存在しない)に存在する:(4)があるか否かを判断します
(5)名前の変更:KEY1のnew_key1の名前を変更
(:秒単位):KEY1のNUMを期限切れ(6)有効期限を設定します
(7)残り時間:TTLのKEY1を(有効期限を設定せずに、-1)
(8)タイプを取得するには、次のタイプのKEY1
Redisの機能:
複数のデータベースは:Redisのは、複数のデータベースを含むことができる、クライアントは、データベースRedisのインスタンスへの接続を指定することができ、Redisのデータベースは0〜15、添字クライアントデフォルトの接続として、16に添字を提供することができデータベースの0。(インデックスは、0〜15の値を添え字を表す。)
(1)選択度:指定されたデータベースに接続されました
移動KEY1のINDEX_:(2)他のデータベースKEY1に移動します
- R EDISトランザクション:トランザクションは、すべてのコマンドはトランザクションの間、連続的に実行され、Redisのは、それによってアトミック・コマンドの実行を確保すること、他のクライアントにサービスを提供ません。トランザクション内のRedisのコマンドを実行するために失敗することがありますが、Redisのトランザクションはロールバックされませんが、コマンドの残りの部分を実行していきます。こことは少し異なるリレーショナルデータベース、リレーショナルデータこの場合には、常にロールバックされますので、マルチトランザクション・ステートメントの後、トランザクションはキューになります、それが実行されたトランザクションに、など、文法をチェックします文法は問題ありません中に、エラーが問題のプログラムは、エラーのためではないRedisのことであり、プログラム自体に誤差を補正するために、ストレージ効率を低下させ、ロールバックするように設計されたコマンド。Redisのは、シリアル分離メカニズムを使用しているトランザクションが開いている場合は、トランザクションのために提供直列化メカニズムは、順番に提出しなければならない、コミットされていないトランザクションまたはトランザクションをロールバックし、トランザクションが完了する前にトランザクションを開くために加えて、それは待たなければなりませんロックが取得したりないロックを取得し、そのデータが送信時にエラーが発生し提出することはできませんするようにデータを処理するために、または他のこの取引の背後にあるデータは、データを処理することはできません。
(1)オープントランザクション:マルチ
(2)トランザクションをコミットします。exec
(3)トランザクションをロールバック:破棄
Redisの持続性:
Redisのパフォーマンスのすべてのデータがメモリに格納されるため。データを保存するためには、データの永続化の必要性に失われることはありません。
RDBの道:デフォルトサポート、ノー構成は、指定した時間間隔内に、メモリ内のデータがディスクにスナップショットを設定します。
AOFの道:Redisのは、起動ログに記録する方法、サーバーによって処理されたすべての操作を記録するには、データベースが完了した起動した後、データを確実にするためにデータベースを再構築するために、ファイルを読み込みます。
持続性なし:機能の持続性を設定することによって無効にRedisのは、ツールのようにRedisの単なるキャッシュは、
AOFの使用と組み合わせ、RDEになることはできません。
RDB:
利点:
1、Redisのデータベースファイルを1つだけ含まれている、それはファイルのバックアップに最適です。
2.バックアップ:このようなシステム致命的な障害が、あなたは復元することができますので、データの最後の30日間で毎時アーカイブ過去24時間のデータ、およびアーカイブ一日一回、として(災害復旧のためのRDBのために非常に適していますあなたは他の記憶媒体への転送後、単一の圧縮ファイルであってもよいです)
Redisのプロセスのために、持続性の初めに実行を避けるために、子によって、これらの永続的な作業が完了した後に、偉大なサーバ・プロセスを子の分岐部の一部を行うための唯一の必要性であるとき:パフォーマンスを最大化するための3、 IO操作
高効率の開始:AOFの利点と比較して4、
短所:
1、システム障害が永続的なタイミングの前に発生するので、ディスクにデータを書き込むための時間がなかった場合は、(RDBは良い選択ではないことを、データをデータの高可用性を(データの損失の可能性を回避するため)を確実にします失われています)
2、完全な永続性を助けるために、子プロセスなので、大量のデータセットは、サーバーが数百ミリ秒を停止することがあり
構成:
Redisのは、道永続的なデフォルトredis.conf用の設定ファイルをRDBを使用する(redis.windows-service.conf次のウィンドウがあります)
保存するために、少なくとも1つの変更キーを表すごとに900秒を発生します。900 1は、保存
300 10を保存します、それは一度保存されて変更され、少なくとも10キーの300秒ごとに表現
セーブ60万:少なくとも、すべてが60秒10,000キーが発生したことを示しています時間節約するために変更
dbfilenameのdump.rdbは:保存されたデータファイル名を表す
./ディレクトリを:のデータ・ストレージ・パスを表す
AOFの
利点を:
1、より高いデータセキュリティを。同期ポリシー:同期毎秒、すべての変更の同期が同期されません。毎秒同期:完全非同期、高効率、システムのダウンタイム、第二の変形データは失われます。この中になるよう、すべての変更の同期:同期は永続として見ることができ、それが発生すると、データの変更、すぐにディスクに書き込まれます低効率の中で、しかし、最も安全な
2、追加モード(APPEND)を使用して、ファイルの書き込み操作をログに記録するため、書き込み処理、それがダウンした場合でも、すでに存在しているログファイルの内容を破壊しないであろう。心配しないで、このようにして存在書き込みは、半押し現れた場合は、次回起動時までにRedisのは、あなたはRedisのチェック-AOFできるツール私たちは、データの整合性の問題を解決するために
ログが大きすぎる場合Redisのは、この期間の記録を生成するための新しいファイルを作成する一方3.、Redisのは、変更されたデータが古いの間でディスク・ファイルに書き込まれ続けるモードを追加するのRedis、メカニズムを書き換える自動的に起動することができますどのようなコマンドを変更して実行されます。スイッチオーバーを書き換えるときしたがって、優れたデータのセキュリティを確保するために、
4は、明確かつ簡単AOFは、すべての変更を記録するログファイルを構成する形式を理解するために、再構成データファイルで行うことができます
デメリット
1、データセットの同じ数のため、AOF文書はRDBよりも大きなファイル
図2は、同期ポリシーに応じて、効率のAOFは、多くの場合、RDBよりも低いです
構成:
redis.confためのRedisのプロファイル(窓のredis.windows-service.conf)
オープンAOF:appenddonlyはい
appendfilename「appendonly.aof」:ファイル名をログに記録しない
同期ポリシー設定:毎秒同期-常にappendfsyncを、すべての同期を修正- appendfsync everysec、同期外れ- appendfsync NOを、
永続的なAOF下のRedis:開始した後、挿入Redisのを再起動し、いくつかのデータの後、flushallして、データベースをクリアしてから、Redisのを再起動する前に、Redisのを閉じて、ログファイルの設定ファイルを変更し、flushAllの最後の行を削除して、保存、
あなたはああを受け取るためにJavaのロードマップ民間の手紙ライターの「Java」を学ぶ必要があります!また、この記事の著者のように、承認ポイントを与える見て、毎日のJava関連の記事を共有することができます!そのようなソースコードなどの学習教材の統合など、随時提示メリット、インタビューの質問、~~があります。