ホームページ  >  記事  >  Java  >  java: Redis は何をするのですか?

java: Redis は何をするのですか?

怪我咯
怪我咯オリジナル
2017-06-26 11:45:144462ブラウズ

概要

1. Redis

Redis は、C 言語で書かれたメモリベースの noSQL データベースで、主に大量のアクセスを保存します。 , 頻繁に変更され、セキュリティ要件が低いデータ。

2.NoSQL

非リレーショナルデータベース。リレーショナル データベースは、実世界のエンティティ間の関係を反映するリレーショナル モデルに基づいて構築されたデータベースです。

3.BSD プロトコル

BSD オープンソース プロトコルは、ユーザーがソース コードを変更し、変更されたコードを公開できるプロトコルです。

4. メッセージミドルウェア

分散アプリケーション間でのメッセージの同期または非同期の送受信をサポートおよび保証するミドルウェア。

5. メッセージキュー

メッセージの送受信プロセスを効果的に制御するために、メッセージを保存するデータ構造が、キューを使用して先入れ先出し方式でメッセージミドルウェアに組み込まれています。

6. SOA

サービス指向アーキテクチャであるサービス指向アーキテクチャは、アプリケーションをいくつかの粗く疎結合されたアプリケーション モジュールに分割し、中立的な インターフェイスを介してこれらのモジュールを接続します。

2 つのキーの名前付け

key01::key02: 複数のレイヤー、隣接するレイヤーは次によって分離されます:

3 つの一般的な操作

  • redis-server.exe redis-windows-conf: 開始サーバー。

  • redis-cli.exe -h 127.0.0.1 -p 6379: IP とポートを介して Redis サービスに接続します。

  • keys *: 現在のデータベース内のすべてのキーを表示します。

  • config get *: すべての構成情報を取得します。

  • helpコマンド: 操作の意味を表示します。

  • help @string: すべての文字列操作を表示します。

  • rename key01 key02: キーの名前を変更します。

  • typeキー: データ型を取得します。

  • delキー: 削除キー。

  • flushdb: 現在のデータベースをクリアします。

  • flushall: すべてのデータベースをクリアします。

4つの文字列

1.

  • セットキー値: 割り当てを追加します。

  • mset key01 value01 key02 value02: 複数のキーに値を割り当てます。アトミックで、同時に成功し、失敗します。

  • set key value nx: キーが存在しない場合にのみ設定できます。

  • set key value xx: キーが存在する場合のみ設定できます。

  • set key value ex seends: キーのタイムアウトを設定します。

  • getset key value: 最初に値を取得してから、それを割り当てます。

2. 削除

del キー: 削除キー。

3.

  • incr キーを変更します: 1 ずつ増加します。

  • incrby key増加: 指定された量を増加します。

  • incrbyfloat キー増分: float 型データで指定された量を増加します。

  • Decr キー: マイナス 1。

  • decrby key decrement: 指定された量を減らします。

4.

  • get key: value を確認します。

  • strlen キー: 文字列の長さを取得します。

  • キーが存在します: 存在する場合は 1、存在しない場合は 0 を返します

5. インデックス

インデックスは 0、1、2 から始まります。 ...
From 最後からインデックスは-1、-2.-3から始まります...

  • setrange キーのインデックス値: インデックス位置から置換します。

  • getrange key begin end: 指定されたインデックス範囲の値を取得します。

  • getrange key 0 -1: すべてを取得します。

5つのLinkedList

1. 二重リンクリストであるLinkedListは、クエリ効率が低く、追加および削除効率が高い。

2.

  • LPUSH キー value01 value02 を追加します: 要素を左からプッシュします。

  • RPUSH キー value02 value02: 要素を右からプッシュします。

3. 削除

  • LPOP キー: 要素を左側からポップします。これは、リストから要素を削除するのと同じです。

  • RPOP KEY: 右側から要素をポップアップします。

  • ltrim key start end :指定範囲外の要素を削除します。

lrem key count value: リンクリスト内の値を持つ count 要素を削除します。

  • Count>0: 左から削除します。

  • Count

  • count=0: すべて削除します。

4.

oldValue の前後の LINSERT キーを変更する newValue: 指定された要素の前後に要素を挿入します。 指定された要素が存在しない場合、操作は実行されません。 指定された要素が複数ある場合は、最初の要素のみが操作されます。

RPOPLPUSH key01 key02: key01 の右側から要素をポップし、key02 の左側にプッシュします。

5.

llen キーを確認します: 長さはリスト内の要素の数です。

6. インデックス

左から右に 0 から始まり、右から左に -1 から始まります。

  • LRANGE key start end: 指定されたインデックス範囲内の要素を取得します。

  • LRANGE キー 0 -1: すべての要素を取得します。

  • LINDEX キーインデックス: 指定されたインデックス位置の値を取得します。

  • LSET キーのインデックス値: 指定したインデックス位置の値を設定します。

Six hash

キー値スペースには、キー値だけでなく、タイムアウトなどの他の情報も格納されるため、キーの数を減らし、キーの数を減らす必要があります。関連する データ 同じキーに格納されると、HashMap と同等のデータ型ハッシュが生成されます。

ハッシュでは、タイムアウト期間はフィールドではなくキーにのみ設定できます。

1.

  • hset key field value を追加しました: key のフィールドに値を割り当てます。

  • hmset key field01 value01 field02 value02: 複数のフィールドに同時に値を割り当てます。

2.

  • hdel キーフィールドの削除: key 内の指定されたフィールドを削除します。

3.

  • hincrby key filed increment を変更します: 整数フィールドを追加します。

  • hincrbyfloat フィールドの増加: 浮動小数点フィールドの値を増加します。

4.

  • hget key field を確認します: key で指定されたフィールドの値を取得します。

  • hmget key field01 field02: 複数のフィールドの値を取得します。

  • hgetall キー: すべてのフィールドとそれに対応する値を取得します。

  • hkeys キー: すべてのフィールド名を取得します。

  • kvals キー: すべてのフィールドの値を取得します。

  • hexists キー フィールド: 指定されたフィールドがキーに存在するかどうかを判断します。

  • hlen key: キー内のフィールドの数を取得します。

セブンセット

注文なし、リピート不可。いわゆる無秩序とは、同じコレクションが異なる時点でクエリされ、同じ並べ替え位置にある要素が異なることを意味します。

1.

  • sadd key value01 vlaue02:要素を追加します。

2.

  • srem key value01 value02: 要素を削除します。

  • spop キー: 要素をランダムに削除します。

3. チェック

  • smembers キー: すべての要素を取得します

  • srandmember キー: 要素をランダムに返します。

  • カードキー: 要素の数を返します。

  • sismember キー値: 値が存在するかどうかを確認します。

4. 交差および和集合演算

交差および和集合演算では、演算対象セット内の要素は削除されません。

  • sdiff key01 key02: 差分セットを見つけて key01 から key02 の要素を削除します。これは単なる操作であり、key01 の要素は削除されません。

  • sdiffstore 宛先 key01 key02: 指定されたコレクションに差分セットを格納します。

  • すいのん key01 key02: ユニオンを見つけてください。

  • sninonstore 宛先 key01 key02: 指定されたコレクションに結合結果を格納します。

  • sinter key01 key02: 交差点を見つけます。

  • sinterstore destination key01 key02: 交差を取得し、指定されたコレクションに保存します。

8sortedset

ソートセット、順序付けの理由、各要素はスコアに関連付けられており、スコアに従ってソートされます。

1.

  • zadd key スコア 01 値 01 スコア 02 値 02 を追加します。

2. 削除

  • zrem キー値: 指定された要素を削除します。

  • zremrangebyrank key start end: 指定されたソート範囲内の要素を削除します。

  • zremrangebyscore key min max: 指定されたスコア範囲内の要素を削除します。

3.

  • Zincrby キーの増分値を変更します: スコアを変更します。

  • zrank キー値: 0 から始まる小さいものから大きいものへの並べ替えを取得します。

  • zrevrank キー値: 0 から始まる大きいものから小さいものへの並べ替えを取得します。

4.

  • zscore キー value01 を確認します: スコアを取得します。

  • zcard キー: セット内の要素の数を取得します。

  • zrange key start end [スコア付き]: 指定されたインデックス範囲の値を取得します。

  • zrangebyscore key min max [limit offset count]: 指定された間隔でのスコアの値を取得します。 Limit は、指定されたオフセットからカウント データを取得するために使用されます。 min の前に ( を追加して、開いている間隔を示すことができます。これは min でのみロードできます。

  • zcount key min max: 指定されたスコア間隔内の要素の数を取得します。

5. ユニオン

zunionstore destination numKeys key[key...] weights weight aggregate max/min/sum
  • destination: ユニオンの結果が保存されるコレクション。

  • numKey: 操作に参加しているコレクションの数。

  • weights: 重み、つまり操作に参加するスコアの割合は、セットごとに個別に指定されます。

  • 集約: 戦略を統合します。

  • zinterstore 宛先 numKeys key[key...] 重み 重み集計 最大/最小/合計: 交差演算。

Nine Rdis の永続性

1. 永続性とは何ですか?

データをハードディスクに保存するプロセスは永続化と呼ばれます。

2.Redis 永続化メソッド

  • RDB: Redis DB、すべてのデータをバイナリ形式で dump.rdb ファイルに保存し、デフォルトで有効になります。

  • AOF: AppendOnlyFile、データベースへの変更操作をファイルに保存します。デフォルトでは閉じられます。

3.RDB

RDB 永続化により、dump.rdb ファイルが生成され、元のファイルが上書きされます。 RDB メソッド

  • ユーザーが保存操作を発行し、サーバーをブロックします。

  • ユーザーが bgsave 操作を発行します。この操作はバックグラウンドで実行され、サーバーをブロックしません。原則は、永続ファイルを生成するサブスレッドを作成することです。

  • 設定ファイルで設定し、指定した条件が満たされた場合に自動的に永続化する これは一般的な方法です。構成条件: を保存、指定された時間内に少なくとも指定された数の書き込み操作が発生した場合にのみ、bgsave 操作が実行されて rdb ファイルが生成されます。

RDB永続化方式は、データベース内のすべてのデータを毎回ハードディスクに保存するため、システムリソースを消費し、頻繁に実行することができません。RDB間隔内のデータのセキュリティを確保するために、AOF永続化が行われます。並行して使用できます。

4.AOF

⑴メモリ内のデータをファイルに書き込むシステムの実行プロセス: 最初にデータをバッファに書き込み、次にバッファがいっぱいになったらバッファの内容をファイルに書き込みます。

⑵データベースへの変更操作を、実行された操作から順にファイルに追加します。

⑶AOP のいくつかの方法

  • always: 変更操作が実行されるたびに、ファイルはすぐに書き込まれます。

  • everysec: 1 秒ごとに変更操作をファイルに書き込みます (デフォルト値)。

  • いいえ: システムによっては、バッファーがいっぱいになった後にファイルが書き込まれます。

⑷AOPファイルの書き換え

AOPファイルが大きくなりすぎるのを避けるために、AOPファイルを書き換えて、複数の操作を1つの操作にマージすることができます。
書き換えメソッド:
最初のメソッド、BGREWRITEAOP: この操作を送信し、AOP ファイルを書き換えるために使用されます。
2 つ目の方法は、設定条件を設定し、条件が満たされた場合に自動的に書き換える方法です。書き換え条件は次のとおりです。

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

AOPファイルサイズが一定値に達したら書き換えます。

TEN Cluster

1. Redis サービスはサービスの複数のレプリカを持つことができ、この Redis サービスはマスター サービスと呼ばれ、他のレプリカはスレーブ サービスと呼ばれます。

2. マスター サービスは、そのデータをスレーブ サービスに同期します。

3. マスター サービスは読み取りと書き込みの両方が可能ですが、スレーブ サービスは読み取りのみが可能です。

4. サービスをスレーブサービスとして設定するには 2 つの方法があります:

  • 顧客は、masterip マスターポートのスレーブを発行します。

  • 設定ファイルで設定します:slaveofmasteripmasterport。

5. 設定ファイルでスレーブ操作をキャンセルすることも、お客様がキャンセルすることもできます: 誰のスレーブも

6. マスター/スレーブレプリケーションの問題
がありますマスター サーバーは 1 つだけです。書き込み操作を実行します。マスター サーバーに障害が発生した場合、書き込み操作は実行できません。

11のセンチネルセンチネルメカニズム

1. センチネルメカニズムとは何ですか?

メイン サーバーのリスナーを構成します。このリスナーはセンチネルと呼ばれ、メイン サーバーに障害が発生した場合、サーバーの実行が中断されないように、センチネルは自動的にスレーブ サーバーをメイン サーバーに昇格させます。

12 個の Twemproxy クラスター

1. マスター/スレーブ レプリケーションでは、書き込みタスクは依然として 1 つのノードによって引き受けられ、書き込みプレッシャーは解決されていません。そのため、Twemproxy クラスター メカニズムが作成され、ユーザーはエージェントはリクエストをプロキシに送信し、書き込みタスクをサーバー プール内のノードに分散します。

2. Twenproxy の基本原理

サーバープール内の各サーバーには受信間隔があり、クライアントがプロキシにリクエストを送信した後、プロキシはキーのハッシュコードを取得し、それを呼び出します

。値がどのサーバーに落ちるかの間隔。

3. 欠点

中心となるオブジェクト、つまりエージェントが存在します。エージェントに問題がある場合、解決策は分散化です。一部が失敗しても、サービス全体は引き続き実行できます。

13 ネイティブ クラスター モード

1. ネイティブ クラスター モードとは何ですか?

複数の Redis マスターサーバーがクラスターを形成し、それぞれがノードと呼ばれます。ノードは、読み取り圧力を共有するために独自の

スレーブサーバーを持つことができます。

2. ノード間の通信の目的の 1 つ

各ノードは他のすべてのノードと通信でき、ノードに障害が発生した場合に他のノードの動作状況を監視する監視の役割を果たします

他の多くのノードに基づいています。各ノードの総合情報から、そのノードが正常に動作しないと判断された場合、そのノードのスレーブサーバーがそのノードに昇格します。

Fourteen Jedis

1. Java で Redis サーバーにアクセスするには、シェルフ パッケージ jedis.jar をインポートする必要があります。

2. Jedis は、Redis サーバーに接続する Java 言語のクライアント ツールです。

3.Jedis は基本的に、Redis サーバーにアクセスするためのコマンドライン方法を保持します。

4. リレーショナル データベースに接続するために接続プールを確立することが最善であるのと同様に、Rdis データベースに接続するために接続プールを確立することも最善です。接続プールを確立するときに使用されるクラスは

です。 JedisPoolConfig/JedisPool。

5. 単一の Redis サーバーには大きな負荷がかかるため、Redis サーバー クラスターと、クラスターの構築時に使用されるクラス HostAndPort/JedisCluster を構築できます。

以上がjava: Redis は何をするのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。