1. Redisの基本的な概念と機能の概要
1.1 Redisの基本概念の紹介
1. Redisはリモートで、クライアントとサーバーがあり、通常サーバーと言います。
2. Redisはメモリに基づいているため、ハードディスクに基づくMySQLよりもはるかに高速ですが、メモリを非常に多く消費します。
3. Redisは非リレーショナルデータベースです。これは本質的にデータベースでもありますが、MySQLリレーショナルデータベースが格納されるときにデータディクショナリを定義する必要がありますが、Redisでは必要ありません。
1.2 RedisとMemcachedの比較
Redisデータ型はすべて、プッシュ/ポップ、追加/削除、共通部分、ユニオンと差分、およびより豊富な操作をサポートし、これらの操作はすべてアトミックです。
Memcachedと同様に、効率を確保するために、データはメモリにキャッシュされます。違いは、Redisが定期的に更新されたデータをディスクに書き込むか、変更操作を追加のレコードファイルに書き込むことであり、これに基づいて、マスター/スレーブ(マスター/スレーブ)同期を実現します。
1.3 Redisはマスター/スレーブ同期をサポートしています。
データはマスターサーバーから任意の数のスレーブサーバーに同期でき、スレーブサーバーは他のスレーブサーバーに関連付けられたマスターサーバーになることができます。これにより、Redisは単一レベルのツリー複製を実行できます。ディスクに保存すると、意図的または意図せずにデータを書き込むことができます。パブリッシュ/サブスクライブメカニズムは完全に実装されているため、任意のデータベースからツリーを同期するときに、チャネルにサブスクライブしてマスターサーバーの完全なメッセージパブリッシングレコードを受信できます。同期は、読み取り操作のスケーラビリティとデータの冗長性に非常に役立ちます。
2、Redisアプリケーションのシナリオ
2.1キャッシュ
Redisはデータキャッシュとしてよく使用されます。
一部のシステムインターフェースが遅い場合は、一部のデータをRedisにキャッシュできます。次にデータをフェッチするときには、時間のかかるSQL操作は実行しません。システムパフォーマンスを向上させるために、キャッシュから直接データをフェッチします。メソッドの1つ。
2.2キュー
プッシュおよびポップ操作は、原子性の実現を保証します。
2.3データ保存
すべての追加、削除、変更、およびチェックはRedisで実行されます。Redisにはハードディスクの永続化メカニズムがあり、データの整合性とセキュリティを確保するために定期的に保存されます。
- redisクライアントを表示する:which redis-cli
- ログイン:redis-cli(デフォルトでこのマシンのポート6379にログイン)
- redis情報を表示するinfoコマンド
3、Redisデータ型
redisでは、\ nとスペースに加えて、名前のコンポーネントコンテンツとして使用できません。他のコンテンツは、キーの名前部分として使用できます。名前の長さは必須ではありません。
3.1文字列型の操作
機能:文字列または整数演算を提供します。
キー値の設定(string / int / float)キー 取得文字列[値] //自增decrby文字列[値] //自减
文字列は最も基本的なタイプのredisです
redis文字列には任意のデータを含めることができます。jpg画像(バイナリ)またはシリアル化されたオブジェクトを含みます。
1つの値の最大上限は1Gバイトです。
文字列タイプのみを使用する場合、redisは永続化機能を備えたmemcacheと見なすことができます。
3.2リストリンクリストタイプ
機能:ストレージシーケンスコレクション、キュー、プッシュおよびポップ操作に使用できます
rpopで左に lpushし、llenキーを右に出して、リスト内の要素の数を確認します。
リストのタイプは先入れ先出しであり、キューに適しています。リストの要素は一意である必要はありません
(1)はじめに
最新の10ログインユーザー情報を取得します。logintimedesc limit 10までにユーザーの注文から*を選択します。
上記のsqlステートメントはユーザーのニーズを満たすことができますが、大量のデータがある場合、すべてのデータが影響を受け、データベースの負荷が比較的高くなります。必要に応じて、キーフィールド(idまたはlogintime)のインデックスも設定する必要があります。これもシステムリソースを消費します。
リストリンクリストで上記の機能を実現した場合、リストリンクリストには最新の10個のデータしか保持できず、新しいデータが入るたびに削除されます。必要なデータをリンクリストから直接取得できるたびに。リソース消費のあらゆる側面を大幅に節約
(2)アプリケーション
リストタイプは、実際には二重にリンクされたリストです。リンクされたリストの先頭または末尾に、プッシュおよびポップ操作で要素を追加および削除します。
これにより、リストをスタックとキューの両方として使用できます。
トップイン、トップアウト:スタック
トップインとボトムアウト:キュー
- lrangeキー0 -1すべての要素を取り出します。
- lremキーn / -n X指定された要素をn回削除します。
- l key1の前後にkey1を挿入しますkey2 key1の前後にkey2を挿入します。
- rpoplpush key1 key2は、key1の正しいキーをkey2のリンクされたリストatomicityに入れます。
機能:順不同のコレクション。各要素は異なります。
3.3セットタイプ
セットタイプは、複数の異なる要素を無秩序な方法で格納し、要素をすばやく追加、検索、削除できます。同じ要素は1つとしてカウントされます。
redisのセットは、文字列型の順序付けられていないコレクションです。
set要素には、最大(2の32乗-1)の要素を含めることができます。
セットのコレクションタイプについては、基本的な追加および削除操作に加えて、
他の有用な操作のセットは、和集合(union)、交点(intersection)、 差集合(difference)を取ることをさらに含みます。これらの操作により、 SNSの友達推薦機能を簡単に実現できます。
注:各セットの各要素を繰り返すことはできません。
このタイプのアプリケーション: QQの友人に推奨されています。
友達のトムサークル(XXの友達):メアリージャックシャオミングwang5 wang6 linken 友達のサークル(XXの友達):ユハンダシオンルース王5 wang6
3.4ハッシュタイプ
機能:キーと値の構造が保存され、キーは文字列でなければなりません
多くの場合、より複雑な構造を格納するために使用されるハッシュは、名前、年齢などの異なるキーのみを必要とします。
挿入/変更:hset hash1 key1 12 get:hash1 key1 view hash length:hlen key one-time get:hmget hash1 key1 key2
3.5ソートセットソートセットタイプ
機能:ストレージはスコアの順序付けられたコレクションで、リーダーボードによく使用されます。
ソートセットは、クラスパフォーマンスランキングなどのランキングによく使用されます。
ハッシュのように、ストレージはマッピングです。保存されるのは、スコアと要素の間のマッピングです。リーダーボードであることがわかります。
値はグローバルに一意である必要があります。
スコアは浮動小数点型です。
ソートセットタイプの操作。2つの要素のスコアが同じ場合、バイトオーダーで配置されます。
追加/変更:zadd zset1 10.1 val1 ビュー番号:zcard zset1ビューランキング:zrange zset1 0 2 withscores特定の値のランキングを表示:zrank zset1 val2
セットと同様に、ソート済みセットも文字列型要素のコレクションです。違いは、各要素が重みに関連付けられていることです。セット内の要素は、重量順に取得できます。
ソートセットタイプは、次のような場合に適しています。
人気のある投稿(応答ボリューム)情報を取得します。メッセージ番号から*を選択します。
(上記の要件は単純なsqlステートメントで実現できますが、sqlステートメントはmysqlデータベースリソースを消費します)
ケース:ソートセットを使用して、最も人気のある上位5件の投稿を取得する
ソートされたセットの各要素は、値と重みの組み合わせです(前のセットコレクションタイプの各要素は単なる値です)
ソートセットを作成するだけで、5つの要素のみを保持します。5つの要素が最も多くの返信です
各投稿が返信されると、コレクションに入る可能性がありますが、返信の数が最も多い上位5件の投稿のみがコレクションに存在し、返信の少ない投稿は削除されます。
やっと
これを読んだ友達は、転送したりフォローしたりできます。他のシリーズの記事は、後で更新して共有したり読んだりする予定です。