redis基本使用

11721 ワード

redisとは
Redis    c               ,redis               。

キー値タイプ
String文字タイプ
mapハッシュタイプ
リストタイプ
setコレクションタイプ
順序付き集合タイプ
redisの適用シーン
  • キャッシュ(データ照会、短い接続、ニュースコンテンツ、商品コンテンツなど).
  • 分散クラスタアーキテクチャにおけるsession分離.
  • チャットルームのオンライン友達リスト.
  • タスクキュー.(秒殺、買い占め、12306など)
  • アプリケーションランキング.
  • Webサイトアクセス統計.
  • データの期限切れ処理(ミリ秒まで正確)
  • redis取付位置
    /usr/local/redis-3.2.5/src
    

    redisを開く
    ./redis-server redis.conf
    

    接続redis
    ./redis-cli -h 127.0.0.1 -p 6379
    

    Redisデータ型
    String
    に値を付ける
    構文:set key value
    127.0.0.1:6379> set name lihao
    OK
    

    値をとる
    構文:get key
    127.0.0.1:6379> get name
    "lihao"
    

    値を取り、値を割り当てる
    構文:getset key value
    127.0.0.1:6379> getset name huahua
    "lihao"
    

    複数のキー値の設定/取得
    構文:mset key value[key value....]
          mget key [key ...]
    127.0.0.1:6379> mset key1 value1 key2 value2
    OK 
    127.0.0.1:6379> mget key1 key2
    1) "value1"
    2) "value2"
    

    削除削除キーすべてのタイプを削除できます
    構文:del key[key...]
    127.0.0.1:6379> del key1 key2
    (integer) 2
    

    数値の増減
  • 増分数字格納された文字列が整数の場合、Redisは、現在のキー値を増分し、増分後の値を返すための実用的なコマンドINCRを提供する.

  • 構文:incr key
    127.0.0.1:6379> incr num
    (integer) 1
    127.0.0.1:6379> incr num
    (integer) 2
    127.0.0.1:6379> incr num
    (integer) 3 
    
  • 指定整数
  • をインクリメントする.
    構文:incrby key increment
    127.0.0.1:6379> incrby num 2
    (integer) 5
    
  • 減算値
  • 構文:decr key
    127.0.0.1:6379> decr num
    (integer) 4
    
  • 指定整数
  • を減少する.
    構文:decrby key decrement
    127.0.0.1:6379> decrby num 10
    (integer) -6
    

    末尾への値の追加
    APPEND            value。               value,
         SET key value。              
    

    append key value
    127.0.0.1:6379> append name "  hello"
    (integer) 13
    

    文字列の長さの取得
    STRLEN         ,         0。
    

    strlen key
    127.0.0.1:6379> strlen name
    (integer) 13
    

    hashハッシュタイプ
    redis hash紹介
    hash      ,             。           ,
           ,         
    

    に値を付ける
    hset            ,        hset    1,          0。
    
  • 一度に1つのフィールド値
  • を設定
    構文hset key field value
    127.0.0.1:6379> hset user username lihao
    (integer) 1
    
  • 複数のフィールド値を一度に設定
  • 構文hmset key filed value[field value...]
    127.0.0.1:6379> hmset user age 26 email [email protected]
    OK
    
  • フィールドが存在しない場合、hsetのように、フィールドが存在する場合、コマンドは何も実行しないという違いがあります.

  • 構文hsetnx key field value{{こうぶん:hsetnx key field value}}
    127.0.0.1:6379> hsetnx user age 48
    (integer) 0
    

    値をとる
  • は一度に1つのフィールド値
  • しか取得できません.
    構文hget key field
    127.0.0.1:6379> hget user username
    "lihao"
    
  • は一度に複数のフィールド値
  • を取得することができる.
    構文hmgetkey field[field]
    127.0.0.1:6379> hmget user username age
    1) "lihao"
    2) "26"
    
  • すべてのフィールド値
  • を取得
    構文hgetall key{{こうぶん:hgetall key}}
    127.0.0.1:6379> hgetall user
    1) "username"
    2) "lihao"
    3) "age"
    4) "26"
    5) "email"
    6) "[email protected]"
    

    フィールドの削除

    構文hdel key field[field...]
    127.0.0.1:6379> hdel user age email
    (integer) 2
    

    数字を増やす
    構文hincrby key filed increment
    127.0.0.1:6379> hincrby user age 6
    (integer) 51
    

    フィールドまたはフィールド値のみ取得
    構文hkeys key hvals key
    127.0.0.1:6379> hkeys user
    1) "username"
    2) "age"
    3) "email"
    
    127.0.0.1:6379> hvals user
    1) "lihao"
    2) "51"
    3) "[email protected]"
    

    フィールド数の取得
    構文hlen key
    127.0.0.1:6379> hlen user
    (integer) 3
    

    List
    ArrayListとLinkedListの違い
  • ArrayListは配列を使用してデータを格納し、クエリーが速く、削除が遅いのが特徴です.
  • LinkedListは双方向チェーンテーブルを使用してデータを格納し、特徴:削除が速く、クエリーが遅いが、クエリーチェーンテーブルの両端のデータも速く、
  • を先に出す.
  • redisのlistはチェーンテーブルを用いて格納されるので、redisのlistデータ型の操作はlist両端データを操作して操作される.

  • リストの両端に要素を追加
  • リスト左に要素
  • を追加
    構文lpush key value[value...]
    127.0.0.1:6379> lpush list:2 1 2 3
    (integer) 3
    
  • リストの右側に要素
  • を追加
    構文rpush key value[value...]
    127.0.0.1:6379> rpush list:2 4 5 6
    (integer) 6
    

    リストの表示
    lrange              ,         ,   start,stop       (       ),   0  。       ,“-1           ” 
    

    構文lrange key start stop
    127.0.0.1:6379> lrange list:2 0 1
    1) "3"
    2) "2"
    
    127.0.0.1:6379> lrange list:2 0 -1
    1) "3"
    2) "2"
    3) "1"
    4) "4"
    5) "5"
    6) "6"
    

    リストの両端から要素をポップアップ
    lpop             ,      :
                      
                 
    

    構文lpop key rpop key
    127.0.0.1:6379> lpop list:2
    "1"
    127.0.0.1:6379> rpop list:2
    "6"
    

    リスト内の要素の数を取得
    構文llen key
    127.0.0.1:6379> llen list:2
    (integer) 2
    

    リストで指定した値を削除
    lremコマンドは、リスト内の前count個の値がvalueの要素を削除し、実際に削除した要素の数を返します.構造count値によって、このコマンドの実行方法が異なります.
  • count>0の場合、lremはリストの左側から
  • を削除します.
  • count<0の場合、lremはリストの後ろから
  • を削除する.
  • count=0の場合、lremはvalueのすべての値を持つ要素を削除します.

  • 構文lrem key count vlaue
    127.0.0.1:6379> lrem list:2 2 8
    (integer) 2
    127.0.0.1:6379> lrem list:2 0 8
    (integer) 2
    

    指定したインデックスの要素値を取得
    構文lindex key index{{こうぶん:lindex key index}}
    127.0.0.1:6379> lindex list:1 2
    "b"
    

    指定した索引の要素値の設定
    構文lset key index value
    127.0.0.1:6379> lset list:1 2 e
    OK
    

    リスト指定クリップのみを保持
    構文ltrim key start stop
    127.0.0.1:6379> ltrim list:1 0 2
    OK
    

    リストに要素を挿入
                      pivot    ,          before  
    after    value             。
    

    構文:linsert key before|after pivot value
    127.0.0.1:6379> linsert list:1 before d f
    (integer) 4 
    

    set
        
        :  ,    
        :  ,   
    

    要素を追加
    文法sadd key member[member...]
    127.0.0.1:6379> sadd set:1 a b c
    (integer) 3
    

    要素の削除
    srem key member[member...]
    127.0.0.1:6379> srem set:1 a
    (integer) 1
    

    コレクション内のすべての要素を取得
    smembers key
    127.0.0.1:6379> smembers set:1
    1) "c"
    2) "b"
    

    要素が集合中に0が存在しないかどうかを判断する
    sismember key member
    127.0.0.1:6379> sismember set:1 a
    (integer) 0
    127.0.0.1:6379> sismember set:1 b
    (integer) 1
    

    コレクション内の要素の数を取得
    構文:scard key
    127.0.0.1:6379> scard set:1
    (integer) 2
    

    コレクションから要素をポップアップ
              ,  spop                 。
    

    構文:spop key
    127.0.0.1:6379> spop set:1
    "a"
    127.0.0.1:6379> spop set:1
    "e"
    

    sortedset
  • sortedはzset
  • とも呼ばれます
  • sortedsetは秩序化された集合であり、並べ替え可能であるが、唯一の
  • である.
  • sortedsetとsetの違いは、setの要素にスコアを追加し、このスコアで
  • をソートします.
    要素を追加
                       ,                       。
                    ,            。
    

    構文:zadd key sore member[sore member]
    127.0.0.1:6379> zadd scorebard 80 zhangsan  89 lisi  30 wangwu
    (integer) 3
    

    要素のスコアの取得
    構文:zscore key member
    127.0.0.1:6379> zscore scorebard lisi
    "98"
    

    要素の削除
    構文:zrem key member[member]
    127.0.0.1:6379> zrem scorebard lisi
    (integer) 1
    

    ランキング範囲で要素を削除
    構文:zremrangebyrankkey start stop小さい頃から削除
    127.0.0.1:6379> zremrangebyrank scorebard 0 1
    (integer) 2
    

    スコア範囲で要素を削除
    構文:zremrangebyscore key min max
    127.0.0.1:6379> zremrangebyscore scorebard 20 40
    (integer) 1
    

    範囲内の要素のリストを取得
  • 要素のスコアが小さい順に、startからstopまでのすべての要素(両端の要素を含む)のインデックス
  • を返します.
    構文:zrange key start top[withscores]
    127.0.0.1:6379> zrange scorebard 0 20 withscores
    1) "wangwu"
    2) "30"
    3) "huangdian"
    4) "78"
    5) "lihao"
    6) "78"
    7) "zhangsan"
    8) "80"
    
  • は、startからstopの間のすべての要素(両端の要素を含む)の
  • を、要素のスコアが大きい順に返す.
    構文:zrevrange key start stop[withscores]
    127.0.0.1:6379> zrevrange scorebard 0 20 withscores
    1) "zhangsan"
    2) "80"
    3) "lihao"
    4) "78"
    5) "huangdian"
    6) "78"
    7) "wangwu"
    8) "30"
    

    要素のランキングの取得
  • 小から大
  • 構文:zrankkey member
    127.0.0.1:6379> zrank scorebard lihao
    (integer) 2
    
  • 大きいから小さいまで
  • 構文:zrevrank key member
    127.0.0.1:6379> zrevrank scorebard zhangsan
    (integer) 0
    

    指定したスコア範囲の要素を取得
    構文:zrangebyscore key min max[withscores][limit offset count]
    127.0.0.1:6379> zrangebyscore scorebard 80 90 withscores
     1) "zhangsan"
     2) "80"
     3) "adian"
     4) "83"
     5) "wangxiao"
     6) "83"
     7) "xiaohua"
     8) "85"
     9) "zhanghe"
    10) "88"
    

    要素のスコアを増やす
              
    

    構文:zincrby key increment member
    127.0.0.1:6379> zscore scorebard xiaohua
    "85"
    127.0.0.1:6379> zincrby scorebard 5 xiaohua
    "90"    
    

    コレクション内の要素の数を取得
    構文:zcard key
    127.0.0.1:6379> zcard scorebard
    (integer) 8
    

    指定したスコア範囲内の要素の数を取得
    構文:zcount key min max
    127.0.0.1:6379> zcount scorebard 70 90
    (integer) 7
    

    応用商品販売ランキング
      :                
      :         (sorted set  ),Key items:sellsort,        。
    

    商品販売量を書き込む
  • 商品番号1001の販売台数は9、商品番号1002の販売台数は10 ZADD items:sellsort 9 1001 10 1002
  • 商品番号1001の販売量に1 ZINCRBY items:sellsort 1 1001
  • を加える
  • 商品売上上位10位:ZRANGE items:sellsort 0 9 withscores
  • keysは、与えられたpatternを満たすすべてのkeyを返す
    keys java*
    

    existsキーが存在するかどうかを確認
    127.0.0.1:6379> exists lihao
    (integer) 0
    127.0.0.1:6379> exists test
    (integer) 1
    

    delキーを削除
    del test
    

    rename名前変更key
    127.0.0.1:6379> rename test test_new
    OK
    

    type戻り値のタイプ
    127.0.0.1:6379> type scorebard
    zset
    127.0.0.1:6379> type list:2
    list    
    

    keyの生存時間を設定する
    redis                ,                    ,
     :       .
    

    構文expire key sconds keyの生存時間(単位:秒)keyが何秒後に自動的に削除されるかを設定
    ttl key key生存時間の表示
    pexpire key milliseconds生存時間設定単位:ミリ秒
    JAva使用
    インポートjar
    commons-pool2-2.3.jar
    jedis-2.7.0.jar
    

    単列リンク
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    Set keys = jedis.keys("*");
    Iterator it = keys.iterator();
    while (it.hasNext()) {
        System.out.println(it.next());
    }
    jedis.close();
    

    接続プール
    JedisPool pool = new JedisPool("127.0.0.1", 6379);
    Jedis jedis = pool.getResource();
    Set keys = jedis.keys("java*");
    Iterator it = keys.iterator();
    while (it.hasNext()) {
        System.out.println(it.next());
    }
    
    jedis.close();
    pool.close();
    

    2016.12.7