一般的なコマンド
keys *
: すべてのキー O(n) をトラバースして出力し、その後に通常は本番環境では使用されない正規表現を使用して、ホット スタンバイ スレーブ ノードに使用できます。dbsize
: キーの総数 O(1) を計算しますexists key
: キーが存在するかどうかを確認し、O(1)、存在する場合は 1 を返し、存在しない場合は 0 を返しますdel key
: 指定されたキー値 O(1) を削除します。一度に複数削除できます。削除に成功した場合は 1 を返し、削除に失敗した場合は 0 を返します。expire key seconds
: キーは数秒で期限切れになります。O(1)ttl key
: 鍵の残りの有効期限 O(1) を確認しますpersist key
: キーの有効期限 O(1) を削除しますtype key
: キーのタイプを返す、O(1)
2弦タイプ(紐)
構造: キーは文字列で、値は文字列、数値文字列、または json 文字列にすることができます. 基本的に、値はすべてバイナリであり、最大値は 512MB を超えることはできません. シナリオ: キャッシュ カウンター
分散ロック
API
get key
: キー O(1) に対応する値を取得しますset key
: キー値を設定、O(1)del key
: キー値を削除、O(1)incr key
: キーは 1 インクリメントされます。キーが存在しない場合は、インクリメント後に get(key)=1、O(1)decr key
: キーを 1 減らします。キーが存在しない場合、get(key)=-1 デクリメント後、O(1)incrby key k
: キーの自動インクリメント k、キーが存在しない場合、自動インクリメント後の get(key)=k、O(1)decrby key k
: キーは k だけデクリメントされ、キーが存在しない場合は get(key)=-k デクリメント後、O(1)set key value
: キーの有無に関わらず設定され、O(1)setnx key value
: キーは存在せず、設定のみ、O(1)set key value xx
: キーは、存在する場合にのみ設定されます。O(1)mget key1 key2 key3...
: バッチでキーを取得、アトミック操作、O(n)mset key1 value1 key2 value2 key3 value3...
: キー値をバッチで設定、O(n)getset key newvalue
: 新しい新しい値を設定し、古い値 O(1) を返しますappend key value
: 古い値に値を追加、O(1)strlen key
: 文字列の長さ O(1) を返しますincrbyfloat key 3.5
: キーに対応する値を 3.5、O(1) に増やしますgetrange key start end
: 文字列 O(1) の指定された添字のすべての値を取得しますsetrange key index value
: 指定された添え字 O(1) の対応するすべての値を設定します
3 つのハッシュ タイプ (ハッシュ)
構造: キー値、値型はキー値 (フィールド値) の集まりで、「Mapmap」型と同様です。
利用シーン: 例えば、各ユーザーの個人ホームページへのアクセス数を記録する
API : すべて「h」で始まる
hget key field
: ハッシュ キー O(1) に対応するフィールドの値を取得します。hset key field value
: ハッシュ キー O(1) に対応するフィールドの値を設定します。hdel key field
: ハッシュキー O(1) に対応するフィールドの値を削除しますhexists key field
: ハッシュ キーにフィールド O(1) があるかどうかを判断します。hlen key
: ハッシュ キー フィールドの数を取得、O(1)hgetall key
: すべてのフィールドと値に対応するハッシュ キーを返す O(n)hvals key
: ハッシュ キー O(n) に対応するすべてのフィールドの値を返しますhkeys key
: すべてのフィールドに対応するハッシュ キーを返す O(n)hsetnx key field value
: ハッシュキーに対応するフィールドの値を設定. フィールドが既に存在する場合, 設定は失敗, O(1)hincrby key field intCounter
: ハッシュキーに対応するフィールドの値を自動インクリメント intCounter, O(1) に設定しますhincrbyfloat key field floatCounter
: ハッシュ キーに対応するフィールドの値を自動インクリメント intCounter (浮動小数点バージョン)、O(1) に設定します。
4 つのリスト型 (リスト)
構造: キー要素、要素はキュー、 、有序,可重复
左右に挿入してポップアップ
使用シナリオ: メッセージ キューの記事リスト
API : すべて「l」と「r」で始まる
rpush key value1 value2 value3 ...
:リストの右端から値を挿入、O(1~n)、挿入後の順番:…、value1、value2、value3lpush key value1 value2 value3 ...
:リストの左端から値を挿入、O(1~n)、挿入後の順番は:value3、value2、value1、…linsert key before|after value newValue
: リストで指定された値の前|後に newValue を挿入、O(n)pop|rpop key
: リストの左側 | 右側から項目をポップ、O(1)lrem key count value
: カウント値に従って、同じ値を持つすべてのアイテムをリストから削除します, O(n)- count > 0、左から右に等しい値を持つ最大 count 個のアイテムを削除します
- count < 0、右から左に等しい値を持つ最大 -count 個のアイテムを削除します
- count = 0、等しい値を持つすべてのアイテムを削除します
ltrim key start end
: インデックス範囲に従ってリストをトリミングし、開始〜終了の長さのリストを保持します, O(n)lrange key start end
: end を含むすべての項目を指定するリストを取得、O(n)lindex key index
: リストの指定されたインデックスにあるアイテムを取得します。O(n)llen key
: リストの長さを取得、O(1)lset key index newValue
: インデックス値を指定するリストを newValue, O(n) に設定しますblpop key timeout
: lpop ブロッキング バージョン、タイムアウトはブロッキング タイムアウトです。タイムアウト = 0 はブロッキングしないことを意味し、O(1)brpop key timeout
: rpop ブロッキング バージョン、timeout はブロッキング タイムアウト、timeout=0 はブロッキングしないことを意味、O(1)
開発スキル:
LRUSH + LPOP = Stack (スタック)
LPUSH + RPOP = Queue (キュー)
LPUSH + LTRIM = Capped Collection (限定コレクション)
LPUSH + BRPOP = Message Queue (メッセージ キュー)
5種類のコレクション(セット)
構造: キー要素、要素はコレクション、无序,不重复
、コレクション間の操作をサポート
シナリオ: 宝くじシステム、マイクロブログのいいね、いいね、嫌いなど
API : すべて「s」で始まる
sadd key element
: コレクションに要素を追加します。要素が既に存在する場合、追加は失敗します。O(1)srem key element
: コレクション キー O(1) の要素を削除します。scard key
: コレクションのサイズ O(1) を計算しますsismember key element
: コレクションに要素 element があるかどうかを判断します、O(1)srandmember key count
: コレクションから count 個の要素をランダムに選択します。要素は削除されません。O(1)spop key
: コレクションから要素をランダムにポップします。要素は削除されます。O(1)smembers key
: コレクション内のすべての要素を取得、O(1)、注意して使用、データ量が多い場合はブロックしやすい
コレクション間の API :
sdiff key1 key2
: 違いsinter key1 key2
: 交差点sunion key1 key2
: ユニオンsdiff|sinter|sunion store key3
: 差分|交差|結合の結果を key3 コレクションに保存します
コレクション間でシナリオを使用する: 共通の注目、共通の友人など。
6 順序集合型 (zset)
構造: キー値、値は一連のキー値 (コア要素)、 、core 用于排序
繰り返し要素なし、規則正しい
使用シナリオ: リーダーボード
API : すべて「z」で始まる
zadd key core1 element1 core2 element2
: 要素を追加、コアは繰り返し可能、要素は繰り返し不可 O(logN)zrem key element
: 要素を削除、O(1)zscore key element
: 要素のコア O(1) を返しますzincrby key increScore clement
: 要素の割合を増減、O(1)zcard key
: 要素の総数 O(1) を返しますzrange key start end [WITHSCORES]
: 指定されたインデックス範囲内の昇順の要素 [スコア] を返します。O(log(n) + m)、n は要素の数、m は取得する要素の数です。zrangebyscore key minScore maxScore [WITHSCORES]
: 指定した範囲スコアの昇順の要素 [スコア] を返します。O(log(n) + m)、n は要素数、m は取得する要素数です。zcount key minScore maxScore
: 指定した範囲スコア O(log(n) + m) の昇順で要素数を返します。n は要素数、m は取得する要素数です。zremrangebyrank|zremrangebyscore key start end
: 指定したランク内の昇順の要素を削除 | 範囲スコア、O(log(n) + m)、n は要素数、m は取得する要素数zrevrank
: 上位から下位への逆順zrevrange
: 範囲データを高い方から低い方へ取るzrevrangebyscore
: 指定されたスコアの高いものから低いものまで結果を取得しますzinterstore
: 交差点