Redisの1つのインストールと5つのデータ型の使用

23777 ワード

1.redisのインストール


1.1インストール

  • 1./optディレクトリの下に入るcd/opt
  • 2.インストール
  • wget http://download.redis.io/releases/redis-5.0.2.tar.gz
    tar xzf redis-5.0.2.tar.gz
    cd redis-5.0.2
    make
    

    1.2 redisのプロファイルのバックアップ

    >   opt  
        cd /opt
    >     myredisconf   
        mkdir myredisconf
    >   redis     
        cd /opt/redis-5.0.2
    >       myredisconf   
        cp ./redis.conf ../myredisconf
    

    1.3 redisバックアップ後のプロファイルの変更

    vim /opt/myredisconf/redis.conf
    
        daemonize no  yes
    ################################ GENERAL #####################################
    # By default Redis does not run as a daemon. Use 'yes' if you need it.
    # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
    daemonize yes
    

    1.4 redisのサービスを開始する

       redis src   
    cd /opt/redis-5.0.2/src
               redis   
    ./redis-server /opt/myredisconf/redis.conf
    
                  
    8347:C 11 Dec 2018 16:36:52.716 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    8347:C 11 Dec 2018 16:36:52.716 # Redis version=5.0.2, bits=64, commit=00000000, modified=0, pid=8347, just started
    8347:C 11 Dec 2018 16:36:52.716 # Configuration loaded
    
        redis    ,      6379,  -p
    ./redis-cli -p 6379
               redis    
    127.0.0.1:6379> 
        
      :ping
    redis  PONG      
        
    set k1 helloworld
    get k1
      
    “helloworld”
      select         
    

    1.5 redis性能テスト


    redisサーバを起動し、redisインストールディレクトリに切り替え、redis-benchmarkを実行するとテスト読み書き速度が表示されます.

    2.redis起動後のその他の基礎知識

  • dbsize

  • 現在のライブラリのkey数の表示
  • keys pattern(keys*,keys k?)

  • 現在のライブラリのすべてのキーがリストされ、keysは正規クエリーをサポートします.たとえば、keys k?はアルファベットk付きキーをクエリーします.
    keys[0-9]*は、頭文字が数字のすべてのkeyであることをクエリーします.
  • flushall

  • すべてのライブラリを空にします(使用しないでください!)
  • flushdb

  • 現在のライブラリを空にします(使用しないでください!)
    redis統合パスワード管理、16ライブラリのパスワードは使用しないか、同じか

    3.redis五大データ型


    Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
    redisは、データベース、キャッシュ、およびメッセージエージェントとして使用できるメモリデータ構造メモリです.彼がサポートするデータ型は
  • String
  • hash
  • list
  • set
  • sorted set
  • bitmap
  • スーパーログ
  • 半径クエリーとストリーム地理空間インデックス
  • を有する

    3.0 redisキー操作(key)

  • keys *
  • exists key名:あるkeyが
  • 存在するか否かを判断する
  • move key db:keyレコードを他のライブラリ
  • に移動する
  • expire key秒数:所与のkeyに期限切れ
  • を設定する.
  • ttl key:あと何秒で期限切れになるかを確認します.-1は期限切れにならないことを示します.-2は期限切れになったことを示します.期限切れの記録は
  • は存在しません.
  • type key:keyのタイプを表示
  • 保存時キーが既に存在する場合は、コンテンツが上書きされます.
    その他のコマンド
    redis      :http://redisdoc.com/
    

    3.1 String型


    Stringはredisの最も基本的なタイプであり、memcacheにそっくりのタイプと理解でき、1つのkeyは1つのvalueに対応する.
    Stringタイプのバイナリは安全で、redisのStringは任意のデータを含むことができることを意味します.例えばjpgのピクチャやシーケンス化されたオブジェクトでは、1つのredisにおける文字列valueは最大512 Mであってもよい.

    文字列操作命令:

  • strlen key:
  •      
    
  • append key:
  •   
    
  • キーに対して純数値:
  • incr key:    
    decr key:    
    incrby key:      
    decrby key:      
    
  • getrange
  •            ,         :
    getrange k1 0 3
    
  • setex(set with expire)キー秒値
  •    key       value ,     key          seconds   。
        key     ,    SETEX          。
    SETEX                  :
    SET key value
    EXPIRE key seconds  #       
    
    SETEX               SETEX      (atomic)  ,                           ,    SETEX               。
    
  • setnx(set if not exist)
  • SETEX               `SETEX`      (atomic)  ,                           ,    `SETEX`               。
    
       
               1 ,         0 。
    
      :
    redis> EXISTS job                # job    
    (integer) 0
    
    redis> SETNX job "programmer"    # job     
    (integer) 1
    
  • MSET key value [key value …]
  •          。
    
               ,    MSET           ,             ,       MSETNX   ,                         。
    
    MSET        OK 。
    
      :
    redis> MSET date "2012.3.30" time "11:00 a.m." weather "sunny"
    OK
    
  • MGET key [key …]
  •                 。
    
               ,        ,              nil   。
    
       :
    MGET          ,              。
    
      :
    redis> MGET redis mongodb
    1) "redis.com"
    2) "mongodb.org"
    
  • MSETNX key value [key value …]
  •               ,          。
    
                 , MSETNX                  。
    
    MSETNX       (atomic)  ,               ,          ,           。
    
       :
                ,      1 ;                         ,        0 。
    
      :
             MSETNX   :
    MSETNX k1 "MySQL" k2 "MongoDB" k3 "redis"
                 :
    redis> MSETNX rmdbs "Sqlite" language "python"  # rmdbs      ,    
    (integer) 0
    

    3.2 Listリスト


    redisリストは簡単な文字列リストで、挿入順に並べて、リストのヘッダー(左)または末尾(右)に要素を追加できます.その下部は実際にチェーンテーブルです.
  • LPUSH key value [value …]
  •   :        value       key    
    
      :      value  ,     value                 :    ,     mylist      LPUSH mylist a b c ,       c b a ,           LPUSH mylist a 、 LPUSH mylist b   LPUSH mylist c     。
       key    ,             LPUSH   。
      key           ,      。
    
       :
       LPUSH    ,     。
    
      :
    redis> lpush mylist a b c d a #         
    redis> LRANGE mylist 0 -1 
    “a”
    "b"
    "c"
    "d"
    "a"
    
  • LPUSHX key value
  •   :   value       key    ,     key          。                。
      LPUSH key value [value …]     ,  key     , LPUSHX        。
    
      :
    #        LPUSHX
    redis> LPUSHX greet "hello"      #    LPUSHX,  ,      
    (integer) 0
    #         LPUSHX
    redis> LPUSHX greet "good morning"      #    LPUSHX     
    (integer) 2
    
  • RPUSH key value [value …]
  •   :        value       key    (   )。
    
      :      value  ,     value                 :         mylist    RPUSH mylist a b c ,         a b c ,        RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。
    
       key    ,             RPUSH   
      key           ,      。
    
       :
       RPUSH    ,    。
    
      :
    redis> RPUSH mylist a b c
    (integer) 3
    
    redis> LRANGE mylist 0 -1
    1) "a"
    2) "b"
    3) "c"
    
  • LPOP key
  •   :        key     
    
       :
          。   key     ,   nil 。
    
      :    ,    
    redis> RPUSH mylist a b c
    (integer) 3
    redis>lpop mylist
    "a"
    
  • RPOP key
  •   :        key     。
    
       :
          。   key     ,   nil 。
    
      :   ,    
    redis> RPUSH mylist a b c d
    (integer) 3
    redis>rpop mylist
    "d"
    
  • LINDEX key index
  •   :     key  ,    index    。
    
      :  (index)   start   stop    0   ,    ,  0           ,  1           ,    。
              ,  -1            , -2             ,    。   key       ,      。
    
       :       index    。    index               (out of range),   nil 
    
      :
    redis> lpush mylist 1 2 3 4 5
    redis> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    redis> lindex mylist 1
    "4"
    
    
  • LLEN key
  •   :     key    。
    
      :   key    ,  key          ,   0
       key       ,      。
    
       :   key    。
    
      :
    redis> llen mylist
    (integer) 5
    
  • LREM key count value
  •   :     count   ,         value      。
    
      :count          :
    count > 0 :           ,    value      ,    count 。
    count < 0 :           ,    value      ,    count     。
    count = 0 :         value     。
    
       :        。        key      (empty list),    key     , LREM        0 。
    
      :
    redis> lrange mylist 0 -1
    1) "3"
    2) "2"
    3) "2"
    4) "2"
    5) "5"
    6) "4"
    7) "3"
    8) "2"
    9) "1"
    redis> lrem mylist 2 2 #  2 mylist  2
    (integer) 2
    redis> lrange mylist 0 -1
    1) "3"
    2) "2"
    3) "5"
    4) "4"
    5) "3"
    6) "2"
    7) "1"
    
  • LTRIM key start stop
  •   :         (trim),   ,              ,                。
    
      :    ,     LTRIM list 0 2 ,        list       ,        。  (index)   start   stop    0   。         ,  -1            ,-2             。
    
       :
      key        ,      
           ,   ok 。
    
      :
                  。
       start            end ( LLEN list    1 )   ,   start > stop , LTRIM        (   LTRIM          )。
       stop     end      ,Redis  stop       end 。
    
      :
    redis> lpush mylist 1 2 3 4 5 6
    redis> lrange mylist 0 -1
    1) "8"
    2) "7"
    3) "6"
    4) "5"
    5) "4"
    6) "3"
    7) "2"
    8) "1"
    redis> LTRIM mylist 0 4 #  0-4   
    OK
    redis> lrange mylist 0 -1
    1) "8"
    2) "7"
    3) "6"
    4) "5"
    5) "4"
    
    redis> ltrim mylist 0 10086 #   stop   end     , stop=end 。
    redis> lrange mylist 0 -1 #          
    1) "8"
    2) "7"
    3) "6"
    4) "5"
    5) "4"
    
    redis> ltrim mylist 10086 4 #start > end       
    redis> lrange mylist 0 -1
    (empty list or set)
    
  • RPOPLPUSH source destination
  •   :
        source         (   )  ,       。
      source            destination ,   destination        
    
      :
       source    ,  nil    ,         。
       source   destination   ,               ,      ,                (rotation)  。
    
       :      。
    
      :
    redis> lpush mylist 1 2 3 4 5
    redis> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    redis> rpoplpush mylist deslist # mylist       deslist   
    1) "1"
    
    redis> lrange deslist 0 -1
    1) "1"
    
  • LSET key index value
  •   :    key     index          value 。
      index       ,       ( key    )   LSET  ,      。
    
       :
           ok ,        。
    
      :
    redis> lpush mylist 1 2 3 4 5
    (integer) 5
    redis> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    redis> lset mylist 2 7 #    2      7
    OK
    redis> lrange mylist 0 -1
    1) "5"
    2) "4"
    3) "7"
    4) "2"
    5) "1"
    
  • LINSERT key BEFORE|AFTER pivot value
  •   :   value       key   ,    pivot      。
      pivot        key  ,       。
      key     , key       ,       。
       key       ,      。
    
       :
            ,          ,     。        pivot ,   -1 。    key         ,   0 。
    
      :
    redis> lpush mylist js is the best language
    (integer) 5
    redis> lrange mylist 0 -1
    1) "language"
    2) "best"
    3) "the"
    4) "is"
    5) "js"
    
    redis> linsert mylist before js java # js    java
    (integer) 6
    redis> lrange mylist 0 -1
    1) "language"
    2) "best"
    3) "the"
    4) "is"
    5) "java"
    6) "js"
    
    

    まとめ:
    彼は文字列のリストで、left、rightはすべて挿入/追加することができます
    キーが存在しない場合は、心得チェーンテーブルを作成します.
    キーが既に存在する場合は、新しい内容を追加します.
    値がすべて削除されると、対応するキーも消えます.
    チェーンテーブルの操作はヘッドでもテールでも効率が高いが,中間要素を操作すると効率が惨めになる.

    3.3 Setコレクション


    redisのsetはstringタイプの不要な集合である.HashTableによって実現されています.
  • SADD key member [member …]
  •   :       member         key   ,         member       。
       key    ,         member         。
      key        ,      。
    
       :
                  ,         。
    
      :
    redis> sadd set01 hello world hello 
    (integer) 2
    redis> smembers set01
    1) "world"
    2) "hello"
    
    
  • SMEMBERS key
  •   :     key       。
         key       。
    
       :
            。
    
      :
    redis> SADD language Ruby Python Clojure
    (integer) 3
    
    redis> SMEMBERS language
    1) "Python"
    2) "Ruby"
    3) "Clojure"
    
  • SISMEMBER key member
  •   :   member        key    。
    
       :
       member         ,   1 。    member          ,  key    ,   0 。
    
      :
    redis> sismember set01 hello
    (integer) 1
    
  • SCARD key
  •   :     key    (        )。
    
       :
         。   key     ,   0 。
    
      :
    redis> scard set01
    (integer) 2
    
  • SREM key member [member …]
  •   :     key         member   ,     member       。
      key       ,      。
    
       :           ,         。
    
      :
    redis> SMEMBERS set01
    1) "hello"
    2) "world"
    redis> srem set01 hello
    (integer) 1
    redis> SMEMBERS set01
    1) "world"
    
  • SRANDMEMBER key [count]
  •   :       ,     key   ,              。
    
      :  Redis 2.6     , SRANDMEMBER         count   :
       count    ,       ,           count       ,          。   count         ,        。
       count    ,          ,               ,        count     。
         SPOP key   ,  SPOP key               ,  SRANDMEMBER          ,           。
    
       :
        key    ,      ;      ,   nil 。       count   ,        ;      ,     。
    
      :
    127.0.0.1:6379> sadd set02 hello is anybody here me
    (integer) 5
    redis> SRANDMEMBER set02 3
    1) "hello"
    2) "me"
    3) "anybody"
    redis> SRANDMEMBER set02 3
    1) "hello"
    2) "me"
    3) "anybody"
    redis> SRANDMEMBER set02 3
    1) "is"
    2) "me"
    3) "anybody"
    
  • SPOP key
  •   :               。
    
       :        。   key      key     ,   nil 。
    
      :5.x      pop  
    redis> SMEMBERS set02
    1) "is"
    2) "here"
    3) "anybody"
    4) "hello"
    5) "me"
    redis> spop set02
    "here"
    redis> spop set02 2
    1) "anybody"
    2) "is"
    redis> SMEMBERS set02
    1) "hello"
    2) "me"
    
    
  • SMOVE source destination member
  •   :  member     source       destination   。
    
      :
       source              member   ,  SMOVE          ,    0 。  , member     source       ,     destination     。
      destination        member    , SMOVE          source      member     。
    
       :
       member        ,   1 。    member      source      ,          destination     ,     0 。
    
      :
    redis> SMEMBERS set01
    1) "are"
    2) "you"
    3) "world"
    redis> SMEMBERS set02
    1) "x"
    2) "y"
    3) "z"
    redis>  smove set01 set02 world
    (integer) 1
    redis> SMEMBERS set02
    1) "z"
    2) "y"
    3) "world"
    4) "x"
    

    数学の集合クラス:
  • 差分セット:SDIFF key[key...]
  •   :           ,               。     key      
    
       :           。
    
      :
    redis> sadd set01 1 2 3 4 5 x y 
    (integer) 7
    redis> sadd set02 1 2 3 4 a b c
    (integer) 7
    redis> sdiff set01 set02
    1) "y"
    2) "x"
    3) "5"
    
    
  • 交差:SINTER key[key...]
  •   :           ,             。
         key      。
                 ,      (        )。
    
       :       。
    
      :
    redis> sadd set01 1 2 3 4 5 x y 
    (integer) 7
    redis> sadd set02 1 2 3 4 a b c
    (integer) 7
    redis> sinter set01 set02
    1) "2"
    2) "3"
    3) "1"
    4) "4"
    
  • 並集:SUION key[key...]
  •   :           ,             。
         key      。
    
       :       。
    
      :
    redis> sadd set01 1 2 3 4 5 x y 
    (integer) 7
    redis> sadd set02 1 2 3 4 a b c
    (integer) 7
    redis> SUNION set01 set02
     1) "y"
     2) "3"
     3) "1"
     4) "c"
     5) "4"
     6) "x"
     7) "5"
     8) "2"
     9) "a"
    10) "b"
    
    

    3.4 Hash


    Javaの中のMapに似ています
  • HSET hash field value
  •   :     hash    field       value 。
                ,                  HSET   。
        field          ,            value   。
    
       :
      HSET            field           ,      1 ;     field         ,    HSET                ,        0 。
    
      :
    redis> hset user id 001
    (integer) 1
    redis> hget user id
    "001"
    
  • HGET hash field
  •   :           。
    
       :
    HGET                。
                 ,              ,        nil 。
    
      :
    redis> hget user id
    "001"
    
  • HSETNX hash field value
  •   :      field             ,         value 。
                   ,              。
          hash    ,                  HSETNX   。
    
       :
    HSETNX            1 ,                      0 。
    
      :
    #        
    redis> HSETNX database name Redis
    (integer) 0
    redis> HGET database name
    "Redis"
    
    #       
    redis> HSETNX database name Riak
    (integer) 0
    redis> HGET database name
    "Redis"
    
  • HMSET key field value [field value …]/HMGET key field [field …]
  •   :      field-value ( - )        key  。
                   。
       key    ,             HMSET   。
    
       :
            ,   OK 。
      key      (hash)   ,      。
    
      :
    redis> hmset customer id 01 name zhangsan sex male
    OK
    redis> hmget customer id name sex
    1) "01"
    2) "zhangsan"
    3) "male"
    
  • HGETALL key
  •   :      key  ,      。
         ,      (field name)      (value),                 。
    
       :                。
      key    ,     。
    
      :
    redis> hgetall customer
    1) "id"
    2) "01"
    3) "name"
    4) "zhangsan"
    5) "sex"
    6) "male"
    
    
  • HLEN key
  •   :      key      。
    
       :        。
      key     ,   0 。
    
      :
    redis> hgetall customer
    1) "id"
    2) "01"
    3) "name"
    4) "zhangsan"
    5) "sex"
    6) "male"
    redis> hlen customer
    (integer) 3
    
    
    
  • HEXISTS hash field
  •   :      field          hash   。
    
       :
    HEXISTS             1 ,            0 。
    
      :
    redis> HEXISTS customer name
    (integer) 1
    
    
  • HKEYS key
  •   :      key      。
    
       :             。
      key     ,      。
    
      :
    redis> hkeys customer
    1) "id"
    2) "name"
    3) "sex"
    
    
  • HVALS key
  •   :      key       。
    
       :
                 。
      key     ,      。
    
      :
    redis> hvals customer
    1) "01"
    2) "zhangsan"
    3) "male"
    
    
  • HINCRBY key field increment
  •   :     key     field        increment 。        ,             。   key    ,              HINCRBY   。      HINCRBY    。
    
       :   HINCRBY     ,    key    field   。
    
      :
    redis> hgetall customer
    1) "id"
    2) "01"
    3) "name"
    4) "zhangsan"
    5) "sex"
    6) "male"
    7) "age"
    8) "19"
    redis> hincrby customer age 1
    (integer) 20
    
    
    
  • HINCRBYFLOAT key field increment
  •   :     key     field         increment 。
              field ,   HINCRBYFLOAT      field      0 ,         。    key    ,   HINCRBYFLOAT          ,     field ,         。
    
       :         field    。
    
      :
    redis> HINCRBYFLOAT customer age 0.5
    "20.5"
    
    

    3.5 Zset秩序集合(sorted set)


    redis zsetは、カラーマップと同様にStringタイプの要素の集合であり、重複は許されない.
    異なるのは、各要素がdoubleタイプのスコアに関連付けられていることです.
    redisは、集合内のメンバーをスコアで小さいものから大きいものに並べ替えるものです.zsetのメンバーは一意ですが、スコア(score)は繰り返すことができます.
  • ZADD key score member [[score member] [score member] …]
  •   :       member      score         key   。
         member          ,       member   score  ,          member   ,     member        。
    score               。
    
       :
                ,         、       。
    
      :
    redis> zadd page_rank 20 baidu.com 30 google.com 40 tencent.com
    (integer) 3
    
  • ZRANGE key start stop [WITHSCORES]
  •   :      key  ,        。
             score    (    )   。
         score         (lexicographical order )   。
         start   stop    0   ,    ,  0           ,  1           ,    。           ,  -1         , -2          ,    。
    
       :     ,   score  (  )         。
    
      :
    redis> zrange page_rank 0 -1
    1) "baidu.com"
    2) "google.com"
    3) "tencent.com"
    
    redis> zrange page_rank 0 -1 withscores
    1) "baidu.com"
    2) "20"
    3) "google.com"
    4) "30"
    5) "tencent.com"
    6) "40"
    
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  •   :      key  ,   score     min   max   (     min   max )   。       score    (    )    
    > LIMIT               (  SQL   SELECT LIMIT offset, count )
    > WITHSCORES                   ,           score      。
    
         :
    min   max     -inf   +inf ,    ,                  score      ,   ZRANGEBYSCORE     。
         ,           (         ),             (             (     ), :ZRANGEBYSCORE zset (1 5
    
       :     ,   score  (  )         。
    
      :
    #  <=30     
    redis> zrangebyscore page_rank -inf 30 withscores
    1) "baidu.com"
    2) "20"
    3) "google.com"
    4) "30"
    
    #       
    redis> zrangebyscore page_rank -inf +inf
    1) "baidu.com"
    2) "google.com"
    3) "tencent.com"
    
    #  >20 <=40     
    27.0.0.1:6379> zrangebyscore page_rank (20 40 withscores
    1) "google.com"
    2) "30"
    3) "tencent.com"
    4) "40"
    
    
  • ZREM key member [member …]
  •   :      key          ,          。
      key            ,      。
    
       :           ,         。
    
      :
    #      
    redis> zrem page_rank baidu.com
    (integer) 1
    
    #      
    redis> ZREM page_rank baidu.com bing.com
    (integer) 2
    
    
  • ZCARD key
  •   :      key    。
    
       :
      key           ,        。   key     ,   0 
    
      :
    redis> zcard page_rank
    (integer) 2
    
    
  • ZCOUNT key min max
  •   :      key  , score    min   max   (     score     min   max )      。
    
       
    score    min   max         。
    
      :
    redis> zadd zset01 10 hello 20 world 30 im 40 jack 50 haha
    (integer) 5
    redis> zcount zset01 10 30
    (integer) 3
    
    
  • ZRANK key member
  •   :      key     member    。         score    (    )    。
        0   ,    , score           0 。
    
       :
       member      key    ,   member    。    member       key    ,   nil 。
    
      :
    redis> zrange zset01 0 -1
    1) "hello"
    2) "world"
    3) "im"
    4) "jack"
    5) "haha"
    redis> zrank zset01 jack #   0  
    (integer) 3
    
    
    
  • ZSCORE key member(インクリメンタル配列)
  •   :      key  ,   member   score  。
       member         key    ,  key    ,   nil 。
    
       :
    member     score  ,        。
    
      :
    redis> zrange zset01 0 -1 withscores
     1) "hello"
     2) "10"
     3) "world"
     4) "20"
     5) "im"
     6) "30"
     7) "jack"
     8) "40"
     9) "haha"
    10) "50"
    redis> zscore zset01 im
    "30"
    
    
  • ZREVRANGE key start stop[WITHSCORES](減算配列)
  •   :      key  ,        。
             score    (    )   。      score              。(reverse lexicographical order)
    
       :
         ,   score  (  )         。
    
      :
    redis> zrevrange zset01 0 -1 withscores
     1) "haha"
     2) "50"
     3) "jack"
     4) "40"
     5) "im"
     6) "30"
     7) "world"
     8) "20"
     9) "hello"
    10) "10"
    
    
  • ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
  •   :      key  , score     max   min   (       max   min )      。       score    (    )     。
         score            (reverse lexicographical order )  。
    
       :
         ,   score  (  )         。
    
      :
    redis> ZREVRANGEBYSCORE zset01 50 20 withscores
    1) "haha"
    2) "50"
    3) "jack"
    4) "40"
    5) "im"
    6) "30"
    7) "world"
    8) "20"