nosql データベースと SQL 構造を持つデータベース
1. 構造化されており、テーブル間に構造を設定しない
2. 主キー制約と外部キー制約はなく、それらの間に関連性もありません。
3. nosql、他のデータベースは redies 構文を使用できません
4. トランザクションなし、ACID 準拠ではない
5. レディはメモリに非常に高速に保存されます
これは、キーと値のペアの形式のキーと値のデータベースです。
1. 設定ファイルを使用してサーバーを起動します。 redis-server redis.windows.conf パスワードは設定ファイル (redis) に設定されます。
2. クライアントを起動する
1》redis-cli リンククライアント
2》パスワード認証「redis」を入力
3インチピン
Redisのデータ型
1.文字列型
value は文字列であり、さまざまな形式に従って次のように分割できます。
文字列: 通常の文字列
int:整数型、単独で増減可能
float:浮動小数点型、単独で増減可能
最大サイズは512mです
* SET: 文字列型の既存のキーと値のペアを追加または変更します
* GET: キーに応じてString型の値を取得します
* MSET: 文字列型の複数のキーと値のペアをバッチで追加します
※MGET:複数のキーに応じてString型の複数の値を取得
* INCR: 整数キーを 1 ずつインクリメントします
* INCRBY: 整数キーを自動インクリメントさせ、ステップ サイズを指定します。例: incrby num 2 num 値を 2 ずつ自動インクリメントさせます。
* INCRBYFLOAT: 浮動小数点数をインクリメントし、ステップ サイズを指定します
* SETNX: キーが存在しない場合は、文字列型のキーと値のペアを追加します。それ以外の場合は実行されません。
* SETEX: String 型のキーと値のペアを追加し、有効期間を指定します
Redis には MySQL のテーブルのような概念がありませんが、異なるタイプのキーをどのように区別すればよいでしょうか?
例えば、redisにユーザーとプロダクトの情報を格納する必要がある場合、ユーザーIDが1、プロダクトIDがたまたま1で、このときIDをキーにすると、衝突しています。どうすればよいでしょうか?
キーにプレフィックスを追加することでそれらを区別できますが、このプレフィックスは無造作に追加されるわけではなく、特定の仕様があります。
Redis のキーでは、複数の単語が階層構造を形成することができ、複数の単語は「:」で区切られます。
例: プロジェクト名: ビジネス名: ID
heima:user:1 heima:product:1 はグラフィカル インターフェイスで確認できます。
2. ハッシュタイプ
順序なしリスト
次の図のキーは heima です: user:1
value はオブジェクト内の各フィールドを個別に保存でき、単一フィールドの追加、削除、変更、クエリを実行できます。
値は 2 つの部分に分かれており、1 つはフィールド (下図の名前 age)、もう 1 つは値 (下図のジャック 21 ローズ 18) です。
ハッシュコマンド
- HSETキーフィールド値:ハッシュ型キーのフィールドの値を追加または変更します
- HGETキーフィールド:ハッシュ型キーフィールドの値を取得します。
- HMSET: キーの複数のフィールドの値をバッチで追加します。
hmset heima:user:4 名前 zyk 年齢
(heima:user:4 はキー名、age は両方のフィールド値は zyk と 20)
- HMGET: キーの複数のフィールドの値をバッチで取得します。
hmget heima:user:4 age name 名前と年齢を同時に取得します
- HGETALL: ハッシュ型キー内のすべてのフィールドと値を取得します
- HKEYS: ハッシュ型キーのすべてのフィールドを取得します。
- HVALS: ハッシュ型キー内のすべての値を取得します
- HINCRBY: ハッシュ型キーのフィールド値を自動インクリメントさせ、ステップサイズを指定します
ヒント: heima:user:4 年齢
- HSETNX: フィールドが存在しない場合は、ハッシュ タイプ キーのフィールド値を追加します。それ以外の場合は実行されません。
リストデータ型
Redis の List タイプは Java の LinkedList に似ており、二重にリンクされたリスト構造とみなすことができます。順方向検索と逆方向検索の両方をサポートできます。誰が「いいね!」を押したかなど、順番が必要なシーンでよく使われます。
特性も LinkedList に似ています。
*秩序ある
*要素は繰り返すことができます
* 高速な挿入と削除
* クエリ速度は平均的です
- LPUSH キー要素 ... : リストの左側 (先頭) に 1 つ以上の要素を挿入します。
- LPOP キー数: リストの左側の要素の数を削除して返します。要素がない場合は nil を返します。 count を書かない場合、デフォルトは最初の要素です。
- RPUSH キー要素 ... : リストの右側に 1 つ以上の要素を挿入します。
- RPOP キー数: リストの右側の要素を削除してその数を返します。ない場合は nil を返します。count が書き込まれていない場合、デフォルトは最初の要素です。
- LRANGE キーのスターエンド: コーナーマークの範囲内のすべての要素を返します
- BLPOP および BRPOP: LPOP および RPOP に似ていますが、要素がない場合は、直接 nil を返すのではなく、指定された時間待機します。
BLPOP 名 10 単位は秒です。名前 10 秒待ちます。10 秒経過しても名前がまだ空の場合は、空を返します。
左が始まりでなければなりません
lpush zaners 1 2 3 が順番に左からプッシュインするため、チームリーダーは 3 になります
セットタイプ
Redis の Set 構造は Java の HashSet に似ており、値が null の HashMap とみなすことができます。これはハッシュ テーブルでもあるため、HashSet と同様の特性があります。
* 障害
※要素を繰り返すことはできません
* 素早く検索
* 交差、和集合、差分などの関数をサポート
共通コマンド
* SADD キー メンバー ... : 1 つ以上の要素をセットに追加します
* SREM キー メンバー ... : セット内の指定された要素を削除します
* SCARD キー: セット内の要素の数を返します
* SISMEMBER キー メンバー: セット内に要素が存在するかどうかを判断します
* SMEMBERS: セット内のすべての要素を取得します
* SINTER key1 key2 ... : key1 と key2 の共通部分を見つけます。両方のセットは
* SDIFF key1 key2 ... : key1 に key2 があるが、key2 がない場合、key1 と key2 の違いを見つけます。
* SUNION key1 key2 ..: key1 と key2 の結合を検索します。繰り返される要素は 1 回だけ記録されます
SortedSet ソート可能なコレクション
1 ソートできる 2 クエリ速度が速い 3 要素を繰り返すことができない リーダーボードの機能を実現するためによく使用されます
行ランキングスコアスコア値はメンバーです
- ZADD キー スコア メンバー: ソートされたセットに 1 つ以上の要素を追加し、スコア値が既に存在する場合は更新します。
ザッド・スタス 99 ジャック 80 ラッキー 95 ローズ 76 マイク
- ZREM キー メンバー: ソート セット内の指定された要素を削除します。
- ZSCORE キーメンバー : ソートセット内の指定された要素のスコア値を取得します
zスコア・スタス・ジャック
- ZRANK キー メンバー: ソートされたセット内の指定された要素のランクを取得します。
- ZCARD キー: ソートされたセット内の要素の数を取得します。
- ZCOUNT key min max: スコア値が指定された範囲内にあるすべての要素の数をカウントします。
- ZINCRBY キー インクリメント メンバー: ソート セット内の指定された要素を自己インクリメントにし、ステップ サイズは指定されたインクリメント値になります。
- ZRANGE key min max: スコア順に並べ替えた後、指定されたランキング範囲内の要素を取得します
- ZRANGEBYSCORE key min max: スコアで並べ替えた後、指定されたスコア範囲内の要素を取得します
- ZDIFF.ZINTER.ZUNION: 差分、交差、和集合の設定
注: デフォルトでは、すべてのランキングが昇順になっています。降順に並べたい場合は、コマンドの Z の後に REV を追加します。例:
昇順 ソートセット内の指定された要素のランクを取得: ZRANK キーメンバー
降順 ソートセット内の指定された要素のランクを取得: ZREVRANK キーメンバー