Redis共通アクションコマンド

10345 ワード

最近のプロジェクトでは、Redisをアプリケーションキャッシュとして使用しており、Redisの一般的な操作を理解し、熟知するために、このノートを整理し、Redisに関する操作を迅速に理解できるようにしたいと考えています.
A.常用管理命令
  • Redis
  • を起動
    redis-server[--port 6379]コマンドパラメータが多すぎる場合は、プロファイルからRedisを起動することを推奨します.
    redis-server[xx/xx/redis.conf]6379はRedisのデフォルトポート番号です.
  • 接続Redis
  • ./redis-cli [-h 127.0.0.1 -p 6379]
  • Redis
  • を停止する.
    redis-cli shutdown
    kill redis-pid以上の2つのRedisコマンドを停止する効果は同じです.
  • コマンドをRedisに送信コマンドには2つの方式がある:
  • .
    1.redis-cli帯域パラメータ運転、例えば:
    redis-cli shutdown not connected>は、デフォルトでローカルの6379ポートに送信されます.
    2、redis-cliはパラメータなしで運行する.例えば:
    ./redis-cli
    127.0.0.1:6379> shutdown
    not connected> 
    
  • 試験連通性
  • 127.0.0.1:6379> ping
    PONG
    

    B.key操作コマンド
  • すべてのキー
  • を取得する.
    構文:keys pattern
    127.0.0.1:6379> keys *
    1) "javastack"
    
  • *はワイルドカードを表し、任意の文字を表し、すべてのキーを巡ってすべてのキーリストを表示し、時間の複雑さO(n)は、本番環境では推奨されません.
  • 取得キー総数
  • 構文:dbsize
    127.0.0.1:6379> dbsize
    (integer) 6
    

    キー総数を取得するとすべてのキーを巡回せず,内部変数,時間複雑度O(1)を直接取得する.
  • クエリキーが存在するかどうか
  • 構文:exists key[key...]
    127.0.0.1:6379> exists javastack java
    (integer) 2
    

    複数のクエリーをクエリーし、存在する数を返します.
  • 削除キー
  • 構文:del key[key...]
    127.0.0.1:6379> del java javastack
    (integer) 1
    

    複数を削除して、削除に成功した数を返すことができます.
  • クエリー・キー・タイプ
  • 構文:type key
    127.0.0.1:6379> type javastack
    string
    
  • 移動キー
  • 構文:move key db
    例:javastackを2番データベースに移動します.
    127.0.0.1:6379> move javastack 2
    (integer) 1
    127.0.0.1:6379> select 2
    OK
    127.0.0.1:6379[2]> keys *
    1) "javastack"
    
  • クエリーkeyのライフサイクル(秒)
  • 構文(取得秒):ttl key
  • 構文(ミリ秒取得):pttl key
  • 127.0.0.1:6379[2]> ttl javastack
    (integer) -1
    -1:     。
    
  • 有効期限
  • を設定する.
  • [秒]構文:expire key seconds
  • [ミリ秒]構文:pexpire key milliseconds
  • 127.0.0.1:6379[2]> expire javastack 60
    (integer) 1
    127.0.0.1:6379[2]> ttl javastack
    (integer) 55
    
  • 無期限設定
  • 構文:persist key
    127.0.0.1:6379[2]> persist javastack
    (integer) 1
    
  • キー名
  • を変更
    構文:rename key newkey
    127.0.0.1:6379[2]> rename javastack javastack123
    OK
    

    C.文字列操作コマンド
    文字列はRedisの最も基本的なデータ型であり、単一のデータが格納できる最大空間は512 Mである.
  • キー値
  • を格納.
    構文:set key value[EX seconds][PX milliseconds][NX|XX]
  • nx:keyが存在しない場合に確立され、
  • xx:keyが存在する場合、その値を変更するか、setnx/setexコマンドを直接使用することもできます.
  • 127.0.0.1:6379> set javastack 666
    OK
    
  • キー値
  • を取得する.
    構文:get key
    127.0.0.1:6379[2]> get javastack
    "666"
    
  • 値増加/減少
  • 文字列の値が数値タイプの場合、incrコマンドを使用して毎回増加し、数値タイプでない場合はエラーを報告できます.
    構文:incr key
    127.0.0.1:6379[2]> incr javastack
    (integer) 667
    

    一度にNをインクリメントしたい場合はincrbyコマンド、浮動小数点型データであればincrbyfloatコマンドでインクリメントできます.同様に、減算はdecr、decrbyコマンドを使用します.
  • 一括格納キー値
  • 構文:mset key value[key value...]
    127.0.0.1:6379[2]> mset java1 1 java2 2 java3 3
    OK
    
  • 取得キー値
  • 構文:mgetkey[key...]
    127.0.0.1:6379[2]> mget java1 java2
    1) "1"
    2) "2"
    

    RedisはUTF-8のコードを受け取り、中国語なら漢字1文字で3桁を占める.
  • 取得値長
  • 構文:strlen key strlen key
    127.0.0.1:6379[2]> strlen javastack
    (integer) 3
    
  • キー値に内容
  • を追加する.
    構文:append key value
    127.0.0.1:6379[2]> append javastack hi
    (integer) 5
    

    キー値の末尾に追加し、コマンド実行後666から666 hiに変更します.
  • 部分文字
  • を取得
    構文:getrange key start end
     127.0.0.1:6379[2]> getrange javastack 0 4
    "javas"
    

    D.集合操作コマンド
    コレクションタイプはリストタイプと似ていますが、コレクションは無秩序で重複できません.
    D.1. しゅうごう
  • 記憶値
  • 構文:sadd key member[member...]
    //    8  (2 java),   7 
    127.0.0.1:6379> sadd langs java php c++ go ruby python kotlin java
    (integer) 7
    
  • 取得要素
  • すべての要素構文の取得:smembers key
    127.0.0.1:6379> smembers langs
    1) "php"
    2) "kotlin"
    3) "c++"
    4) "go"
    5) "ruby"
    6) "python"
    7) "java"
    

    ランダム取得構文:srandmember langs count
    127.0.0.1:6379> srandmember langs 3
    1) "c++"
    2) "java"
    3) "php"
    
  • 集合に要素が存在するか否かを判断する
  • .
    構文:sismember key member
    127.0.0.1:6379> sismember langs go
    (integer) 1
    
  • 取得集合要素個数
  • 構文:scard key
    127.0.0.1:6379> scard langs
    (integer) 7
    
  • コレクション要素
  • を削除
    構文:srem key member[member...]
    127.0.0.1:6379> srem langs ruby kotlin
    (integer) 2
    
  • ポップアップ要素
  • 構文:spop key[count]
    127.0.0.1:6379> spop langs 2
    1) "go"
    2) "java"
    

    D.1. ちくじしゅうごう
    順序付きコレクションとリストの違い:
  • リストはチェーンテーブルを使用して実現され、両端が速く、中間が遅い.秩序化された集合はハッシュ・リストとジャンプ・テーブルで実現され,中間の要素を読み取っても比較的速い.
  • リストは要素の位置を調整することはできませんが、順序付き集合は要素の位置を調整することができます.
  • の順序付けされたセットは、リストよりもメモリを占めます.
  • 記憶値
  • 構文:zadd key[NX|XX][CH][INCR]score member[score member...]
    127.0.0.1:6379> zadd footCounts 16011 tid 20082 huny 2893 nosy
    (integer) 3
    
  • 要素スコア
  • を取得
    構文:zscore key member
    127.0.0.1:6379> zscore footCounts tid
    "16011"
    
  • 取得ランキング範囲
  • 構文:zrange key start stop[WITHSCORES]
    //     ,    
    127.0.0.1:6379> zrange footCounts 0 -1
    1) "nosy"
    2) "tid"
    3) "huny"
    
    //        
    127.0.0.1:6379> zrange footCounts 0 -1 Withscores
    1) "nosy"
    2) "2893"
    3) "tid"
    4) "16011"
    5) "huny"
    6) "20082"
    
  • 指定点数範囲ランキング
  • を取得
    構文:zrangebyscore key min[WITHSCORES][LIMIT offset count]
    127.0.0.1:6379> zrangebyscore footCounts 3000 30000 withscores limit 0 1
    1) "tid"
    2) "16011"
    
  • 指定要素分率
  • を増加する.
    構文:zincrby key increment member
    127.0.0.1:6379> zincrby footCounts 2000 tid
    "18011"
    
  • 取得集合要素個数
  • 構文:zcard key
    127.0.0.1:6379> zcard footCounts
    (integer) 3
    
  • 指定範囲分数個数
  • を取得する.
    構文:zcount key min max
    127.0.0.1:6379> zcount footCounts 2000 20000
    (integer) 2
    
  • 指定要素
  • を削除する.
    構文:zrem key member[member...]
    127.0.0.1:6379> zrem footCounts huny
    (integer) 1
    
  • 取得要素ランキング
  • 構文:zrankkey member
    127.0.0.1:6379> zrank footCounts tid
    (integer) 1
    

    E.リスト操作コマンド
    リストタイプは秩序あるフィールド列のリストで、内部は双方向チェーンテーブルを使用して実現され、両端に要素を操作することができ、両端のデータを取得する速度が速く、インデックスを通じて具体的な行数にインデックスするのが遅い.
    リストタイプの要素は秩序正しく、繰り返し可能です.
  • 記憶値
  • 左端メモリ値構文:lpush key value[value...]
    127.0.0.1:6379> lpush list lily sandy
    (integer) 2
    

    右端メモリ値構文:rpush key value[value...]
    127.0.0.1:6379> rpush list tom kitty
    (integer) 4
    

    インデックス値構文:lset key index value
    127.0.0.1:6379> lset list 3 uto
    OK
    
  • ポップアップ要素
  • 左端ポップアップ構文:lpop key
    127.0.0.1:6379> lpop list
    "sandy"
    

    右端ポップアップ構文:rpop key
    127.0.0.1:6379> rpop list
    "kitty"
    
  • 取得要素個数
  • 構文:llen key
    127.0.0.1:6379> llen list
    (integer) 2
    
  • リスト要素
  • を取得する.
    両側取得構文:lrange key start stop
    127.0.0.1:6379> lpush users tom kitty land pony jack maddy
    (integer) 6
    
    127.0.0.1:6379> lrange users 0 3
    1) "maddy"
    2) "jack"
    3) "pony"
    4) "land"
    
    //     
    127.0.0.1:6379> lrange users 0 -1
    1) "maddy"
    2) "jack"
    3) "pony"
    4) "land"
    5) "kitty"
    6) "tom"
    
    //      
    127.0.0.1:6379> lrange users -3 -1
    1) "land"
    2) "kitty"
    3) "tom"
    

    インデックス取得構文:lindex key index
    127.0.0.1:6379> lindex list 2
    "ketty"
    
    //      
    127.0.0.1:6379> lindex list -5
    "sady"
    
  • 削除要素
  • 値に基づいて構文を削除する:lrem key count value
    127.0.0.1:6379> lpush userids 111 222 111 222 222 333 222 222
    (integer) 8
    
    // count=0     
    127.0.0.1:6379> lrem userids 0 111
    (integer) 2
    
    // count > 0       count 
    127.0.0.1:6379> lrem userids 3 222
    (integer) 3
    
    // count < 0       count 
    127.0.0.1:6379> lrem userids -3 222
    (integer) 2
    

    範囲削除構文:ltrim key start stop
    //    2-4     
    127.0.0.1:6379> ltrim list 2 4
    OK
    

    F.ハッシュ操作コマンド
    Redis文字列タイプキーと値はディクショナリ構造形式であり、ここでのハッシュタイプの値はディクショナリ構造であってもよい.
  • キー値
  • を格納.
    単一ハッシュ構文:hset key field value
    127.0.0.1:6379> hset user name javastack
    (integer) 1
    

    複数のハッシュ構文:hmset key field value[field value...]
    127.0.0.1:6379> hmset user name javastack age 20 address china
    OK
    

    ハッシュが存在しない場合の構文:hsetnx key field value
    127.0.0.1:6379> hsetnx user tall 180
    (integer) 0
    
  • フィールド値
  • を取得
    単一構文:hget key field
    127.0.0.1:6379> hget user age
    "20"
    

    複数の構文:hmget key field[field...]
    127.0.0.1:6379> hmget user name age address
    1) "javastack"
    2) "20"
    3) "china"
    
  • すべてのキー値
  • を取得する.
    構文:hgetall key
    127.0.0.1:6379> hgetall user
    1) "name"
    2) "javastack"
    3) "age"
    4) "20"
    5) "address"
    6) "china"
    
  • すべてのフィールド
  • を取得
    構文:hkeys key
    127.0.0.1:6379> hkeys user
    1) "name"
    2) "address"
    3) "tall"
    4) "age"
    
  • すべての値
  • を取得
    構文:hvals key
    127.0.0.1:6379> hvals user
    1) "javastack"
    2) "china"
    3) "170"
    4) "20"
    
  • フィールドが存在するか否かを判定する
  • .
    構文:hexists key field
    127.0.0.1:6379> hexists user address
    (integer) 1
    
  • 取得フィールド数
  • 構文:hlen key
    127.0.0.1:6379> hlen user
    (integer) 4
    
  • ハッシュ増加/減少
  • 構文:hincrby key field increment
    127.0.0.1:6379> hincrby user tall -10
    (integer) 170
    
  • ハッシュフィールド
  • を削除
    構文:hdel key field[field...]
    127.0.0.1:6379> hdel user age
    (integer) 1