1.文字列データタイプ:
文字列の一般的な操作:
SET key value
キーと値のペアを保存し、SETはタイプに関係なく古い値を上書きしますMSET key value [key value ...]
文字列のキーと値のペアをバッチ保存するSETNX key value
存在しないキーと値のペアを保存し、キーが存在する場合は何もしないGET key
キーに従ってキーに対応する値を取得しますMGET key [key ...]
文字列のキーと値のペアをバッチで取得するDEL key
キーに対応するキーと値のペアを削除しますEXPIRE key seconds
指定されたキー値の有効時間を設定します
原子の加算と減算
INCR key
キー値に対応する番号に1を追加しますDECR key
キーによって保存された値を1減らしますINCRBY key increment
キーストレージアレイに増分を追加するDECRBY key increment
キーによって格納された配列から増分を減算します
アプリケーションシナリオ:
-
単一値のキャッシュ:
SET key value
、GET key
-
オブジェクトキャッシュ:
SET user:1 value(json字符串)
;
預金:MSET user:1:name zhangsan user:1:age 10
テイク:MGET user:1:name user:1:age
JSON形式よりも優れた単一の属性操作を容易にするために、その優れたパフォーマンス、最適な選択HASH
-
分散ロック:
SETNX product:10001 true
// 1を送信してロックが成功したことを示し、不利な場合は使用しない
SETNX product:10001 true
// 0を送信してロックが失敗したことを示す
DEL product:10001
//ロックを解除する
SET product:10001 true ex 10 nx
//プログラムが予期せず終了してデッドロックが発生するのを防ぐ -
Redis でのカウンター読み取り統計の使用:INCR article:readcount:{文章Id}
記事閲覧統計GET article:readcount:{文章Id}
-
分散システムの一意のIDは、
INCRBY orderId 1000
redisを生成してシリアル番号を生成し、パフォーマンスを向上させます。
2.HASH構造
一般的な操作
HSET key field value
//ハッシュテーブルキーのキー値を格納しますHSETNX key field value
//存在しないハッシュテーブルキーのキー値を格納しますHMSET key field value [field value ...]
複数のキーと値のペアをハッシュテーブルキーに格納するHGET key field
ハッシュテーブルのフィールドのキー値を取得するHMGET key field [field ...]
ハッシュテーブルキーの複数のフィールドのキー値を取得するHDEL key field [field ...]
ハッシュテーブルキーのフィールドキー値を削除するHLEN key
ハッシュテーブルキーのフィールド数HGETALL key
ハッシュテーブルキーのすべてのキーと値のペアを返しますHINCRBY key field increment
ハッシュテーブルキーのフィールドフィールドの値に増分を追加する
アプリケーションシナリオ
-
オブジェクトストレージ
HSET user:10001 name zhangsan age 10
//オブジェクトプロパティの設定
HGET user:10001 name age
//属性情報の取得 -
eコマースのショッピングカートのシナリオ
eコマースのショッピングカートのデータ構造:- ユーザーIDをキーとして使用
- 製品IDはフィールドです
- 商品数はお値打ちです
ショッピングカート操作:
- 製品を追加->
HSET cart:1001 10088 1
- 数を増やす->
HINCRBY cart:1001 10088 1
- 製品の総数->
HLEN cart:1001
- 製品を削除
HDEL cart:1001 10088
- ショッピングカート内のすべてのアイテムを取得する->
HGETALL cart:1001
3.Listデータ構造
一般的なコマンド
LPUSH key value [value ...]
キーリストのヘッド(左端)に1つ以上の値を挿入しますRPUSH key value [value ...]
キーリストのヘッダーに1つ以上の値を挿入します(右端)LPOP key
キーリストのヘッド要素を削除して返すRPOP key
キーのテール要素を削除して返しますLRANGE key start stop
キー内の指定された間隔の要素を返します。間隔オフセットは開始と停止で指定されますBLPOP key [key ...] timeout
要素がキーの先頭からポップアップします。キーに要素がない場合は、ブロックして待機し、タイムアウトをブロックします。タイムアウトが0の場合は、常にブロックしますBRPOP key [key ...] timeout
要素がキーテーブルの最後からポップアップします。キーに要素がない場合、待機をブロックし、タイムアウトをブロックします。タイムアウトが0の場合、ブロックを意味します
アプリケーションシナリオ
-
一般的なデータ構造
- スタック= LPUSH + LPOP-> FILO詳細
- キュー= LPUSH + RPOP-> FIFO先入れ先出し
- ブロッキングMQ(ブロッキングキュー)= LPUSH + BRPOP
-
WeiboおよびWeChatパブリックアカウントのメッセージフロー
この例では、RedisでのWeChatパブリックナンバースペアタイヤとMacトークの使用に焦点を当てています。
- MacトークがメッセージID 10018をリリース->
LPUSH msg:{订阅人Id} 10018
- スペアタイヤは車がメッセージID 10019->をリリースしたと言った
LPUSH msg:{订阅人Id} 10019
- 6->などの最新の購読済みニュースを表示
LRANGE msg:{订阅人Id} 0 5
4.SET構造
一般的なコマンド
SADD key member [member ...]
1つ以上のメンバーをキーに入れ、要素が存在する場合は無視しますSREM key member [member ...]
コレクションキーから1つ以上のメンバーを削除するSMEMBERS key
コレクションキーのすべての要素を返しますSCARD key
コレクションキーの要素の数SISMEMBER key member
メンバーがキーの要素かどうかを判別SRANDMEMBER key [count]
キーからcount個の要素をランダムにカウントします。要素はキーから削除されません。SPOP key [count]
キーからcount個の要素をランダムに取得し、キーから要素を削除しますSINTER key [key ...]
交差点運転SINTERSTORE destination key [key ...]
交差の結果を新しい収集先に保存しますSUNION key [key ...]
ユニオンオペレーションSUNIONSTORE destination key [key ...]
ユニオンの結果を新しい宛先に保存
-SDIFF key [key ...]
差分操作、
アプリケーションシナリオ
- 宝くじモデル
例におけるRedisの参加宝くじの使用:- コレクションに参加するには、クリックして抽選に参加してください->
SADD key {userId}
- ドローに参加しているすべてのユーザーを表示->
SMEMBERS key
- 勝者を引く->
SRANDMEMBER key [count]/SPOP key [count]
- コレクションに参加するには、クリックして抽選に参加してください->
- いいね、フォローして、WeiboとWeChatで収集
例のRedisでのlikeモデルの使用:
-
いいね->
SADD like:{消息id} {用户id}
-
とは異なり->
SREM like:{消息id} {用户id}
-
ユーザーが好きかどうかを確認します->
SISMEMBER like:{消息id} {用户id}
-
好きなユーザーのリストを取得する->
SMEMBERS like:{消息id}
-
いいねの数を取得->
SCARD like:{消息id}
-
WeChat Weiboフォローモデル:
Redisで使用されるWeChatフォローモデルの例:- 張さんがフォローする人->
zhangsanSET->{lisi,sima,luban}
- Li Siフォローする人->
lisiSET->{zhangsan,sima,luban,qiaofeng}
- 王呉がフォローする人々->
wangwuSET->{zhangsan,lisi,luban,qiaofeng,duanyu}
- 張さんと李さんが気になる人→
SINTER zhangdanSET lisiSET
- ジョー・スミスはまた、人々の注目ドウを懸念- >裁判官へのウォッチリストの各メンバーのzhangsanSETリスト
SISMEMBER simaSET lisi
、SISMEMBER lubanSET lisi
- 張さんが知っているかもしれない人々->
SDIFF lisiSET zhangsanSET
- 張さんがフォローする人->
-
一括操作eコマースプラットフォームの
商品スクリーニング:redis での商品スクリーニング条件の使用:SADD brand:HUAWEI p30
SADD brand:xiaomi mi-6X
SADD brand:IPhone iphone8
SADD os:android p30 mi-6X
SADD cpu:brand:intel p30 mi-6X
SADD ram:8G p30 mi-6X iphone8
SINTER os:android cpu:brand:intel ram:8G
->{p30 mi-6X}
SortedSetデータ構造
一般的なコマンド
ZADD key score member [[score member] [score member] ...]
スコア付きの要素を順序付けられた組み合わせキーに追加するZREM key member [member ...]
注文したコレクションからキーを削除しますZSCORE key member
順序付けられたキー内のメンバーメンバーのスコア値を返しますZINCRBY key increment member
順序付きセットキーのメンバー要素スコアに増分を追加しますZCARD key
順序付けられたキーの要素の数を返しますZRANGE key start stop [WITHSCORES]
順序付きセットキーの要素を開始添字から停止添字まで正の順序で取得しますZREVRANGE key start stop [WITHSCORES]
順序付きセットキーの要素を開始添字から停止添字まで逆の順序で取得しますZUNIONSTORE destination numkeys key [key ...]
ユニオン計算ZUNIONSTORE destination numkeys key [key ...]
交差計算
アプリケーションシナリオ
- リーダーボードシーン
RedisでのWeiboリーダーボードの使用:- ニュース->をクリックします
ZINCRBY hotNews:20190819 1 守护香港
- 今日のトップ10を表示->
ZREVRANGE hotNews:20190819 0 10 WITHSCORES
- 7日間の検索リスト->
ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814 hotNews:20190815....hotNews:20190819
- 7日にトップ10を表示->
ZREVRANGE hotNews:20190813-20190819 0 10 WITHSCORES
- ニュース->をクリックします