Redis---B局学習---redisデータ型List

29706 ワード

Redis-B局学習-redisデータ型List
一、Listは単値多Value
二、ケース
  • lpush:リストkeyのヘッダーに1つ以上の値valueを挿入し、 :LPUSHコマンドを実行した後、リストの長さ.
    #       
    
    redis> LPUSH languages python
    (integer) 1
    
    #       
    
    redis> LPUSH languages python
    (integer) 2
    
    redis> LRANGE languages 0 -1     #         
    1) "python"
    2) "python"
    
    #       
    
    redis> LPUSH mylist a b c
    (integer) 3
    
    redis> LRANGE mylist 0 -1
    1) "c"
    2) "b"
    3) "a"
    
  • rpush:リストkeyのテーブルの末尾(右端)に1つ以上の値valueを挿入します.戻り値はRPUSH操作後のテーブルの長さです.
    #       
    
    redis> RPUSH languages c
    (integer) 1
    
    
    #       
    
    redis> RPUSH languages c
    (integer) 2
    
    redis> LRANGE languages 0 -1 #         
    1) "c"
    2) "c"
    
    
    #       
    
    redis> RPUSH mylist a b c
    (integer) 3
    
    redis> LRANGE mylist 0 -1
    1) "a"
    2) "b"
    3) "c"
    
  • lrange:リストkeyで指定した区間内の要素を返し、区間はオフセット量startとstopで指定します.戻り値は、指定した区間内の要素を含むリストです.
    redis> RPUSH fp-language lisp
    (integer) 1
    
    redis> LRANGE fp-language 0 0
    1) "lisp"
    
    redis> RPUSH fp-language scheme
    (integer) 2
    
    redis> LRANGE fp-language 0 1
    1) "lisp"
    2) "scheme"
    
  • lpop:リストkeyのヘッダ要素を削除して返します.戻り値は、リストのヘッダ要素です.keyが存在しない場合はnilを返します.
    redis> LLEN course
    (integer) 0
    
    redis> RPUSH course algorithm001
    (integer) 1
    
    redis> RPUSH course c++101
    (integer) 2
    
    redis> LPOP course  #      
    "algorithm001"
    
  • rpop:リストkeyの末尾要素を削除して返します.戻り値は、リストの末尾要素です.keyが存在しない場合はnilを返します.
    redis> RPUSH mylist "one"
    (integer) 1
    
    redis> RPUSH mylist "two"
    (integer) 2
    
    redis> RPUSH mylist "three"
    (integer) 3
    
    redis> RPOP mylist           #         
    "three"
    
    redis> LRANGE mylist 0 -1    #        
    1) "one"
    2) "two"
    
  • lindex, ( ):リストkeyにindexと表示される要素を返します.戻り値は、リストにindexと表示される要素です.indexパラメータの値がリストの区間範囲内でない場合(out of range)、nilを返します.
    redis> LPUSH mylist "World"
    (integer) 1
    
    redis> LPUSH mylist "Hello"
    (integer) 2
    
    redis> LINDEX mylist 0
    "Hello"
    
    redis> LINDEX mylist -1
    "World"
    
    redis> LINDEX mylist 3        # index   mylist       
    (nil)
    
  • llen:リストキーの長さを返します.戻り値はリストkeyの長さです.
    #    
    
    redis> LLEN job
    (integer) 0
    
    #     
    
    redis> LPUSH job "cook food"
    (integer) 1
    
    redis> LPUSH job "have lunch"
    (integer) 2
    
    redis> LLEN job
    (integer) 2
    
  • lrem key N value:パラメータcountの値に基づいて、リスト内のパラメータvalueに等しい要素を除去します.戻り値は、除去された要素の数です.存在しないkeyは空のテーブル(empty list)と見なされるため、keyが存在しない場合、LREMコマンドは常に0を返します.注意:
  • count>0:ヘッダーからヘッダーへの検索を開始し、valueに等しい要素を削除します.数はcountです.
  • count<0:countの絶対値であるvalueに等しい要素をテーブルの最後からヘッダーに検索します.
  • count=0:valueに等しいすべての値をテーブルから削除します.
    #       ,     
    # morning hello morning helllo morning
    
    redis> LPUSH greet "morning"
    (integer) 1
    redis> LPUSH greet "hello"
    (integer) 2
    redis> LPUSH greet "morning"
    (integer) 3
    redis> LPUSH greet "hello"
    (integer) 4
    redis> LPUSH greet "morning"
    (integer) 5
    
    redis> LRANGE greet 0 4         #       
    1) "morning"
    2) "hello"
    3) "morning"
    4) "hello"
    5) "morning"
    
    redis> LREM greet 2 morning     #         ,        morning
    (integer) 2                     #        
    
    redis> LLEN greet               #    3    
    (integer) 3
    
    redis> LRANGE greet 0 2
    1) "hello"
    2) "hello"
    3) "morning"
    
    redis> LREM greet -1 morning    #         ,    morning
    (integer) 1
    
    redis> LLEN greet               #       
    (integer) 2
    
    redis> LRANGE greet 0 1
    1) "hello"
    2) "hello"
    
    redis> LREM greet 0 hello      #        hello
    (integer) 2                    #    hello    
    
    redis> LLEN greet
    (integer) 0
    
  • ltrim key index index, key:1つのリストをトリム(trim)します.つまり、リストに された の のみを させ、 された でない はすべて されます. り はコマンド に した 、okを します. :

  • は、リストの 1の を0、リストの 2の を1で す.
  • は、リストの の を1で し、リストの から2 の を2で します.
    #    1:     , start   stop            
    
    redis> LRANGE alpha 0 -1       # alpha       5        
    1) "h"
    2) "e"
    3) "l"
    4) "l"
    5) "o"
    
    redis> LTRIM alpha 1 -1        #    alpha       0    
    OK
    
    redis> LRANGE alpha 0 -1       # "h"     
    1) "e"
    2) "l"
    3) "l"
    4) "o"
    
    
    #    2: stop            
    
    
    redis> LTRIM alpha 1 10086     #    alpha      1     10086     
    OK
    
    redis> LRANGE alpha 0 -1       #      0      "e"1) "l"
    2) "l"
    3) "o"
    
    
    #    3: start   stop            ,   start < stop
    
    redis> LTRIM alpha 10086 123321
    OK
    
    redis> LRANGE alpha 0 -1        #      
    (empty list or set)
    
    
    #    4: start   stop            ,   start > stop
    
    redis> RPUSH new-alpha "h" "e" "l" "l" "o"     #          
    (integer) 5
    
    redis> LRANGE new-alpha 0 -1
    1) "h"
    2) "e"
    3) "l"
    4) "l"
    5) "o"
    
    redis> LTRIM new-alpha 123321 10086    #    LTRIM
    OK
    
    redis> LRANGE new-alpha 0 -1           #      
    (empty list or set)
    

  • rpoplpush :RPOPLPUSHを1つの に、 の2つの を します.
  • リストsourceの の ( )をポップアップし、クライアントに します.
  • sourceポップアップ をdestinationリストのヘッダ としてリストdestinationに します.
    # source   destination   
    
    redis> LRANGE alpha 0 -1         #       
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    
    redis> RPOPLPUSH alpha reciver   #      RPOPLPUSH   
    "d"
    
    redis> LRANGE alpha 0 -1
    1) "a"
    2) "b"
    3) "c"
    
    redis> LRANGE reciver 0 -1
    1) "d"
    
    redis> RPOPLPUSH alpha reciver   #      ,   RPOP   LPUSH      
    "c"
    
    redis> LRANGE alpha 0 -1
    1) "a"
    2) "b"
    
    redis> LRANGE reciver 0 -1
    1) "c"
    2) "d"
    
    
    # source   destination   
    
    redis> LRANGE number 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    
    redis> RPOPLPUSH number number
    "4"
    
    redis> LRANGE number 0 -1           # 4        
    1) "4"
    2) "1"
    3) "2"
    4) "3"
    
    redis> RPOPLPUSH number number
    "3"
    
    redis> LRANGE number 0 -1           #     3        
    1) "3"
    2) "4"
    3) "1"
    4) "2"
    

  • lset key index value:リストkeyの にindexと される の をvalueに します. り は、 がOKを に した 、エラーメッセージを します.
    #     (key    )   LSET
    
    redis> EXISTS list
    (integer) 0
    
    redis> LSET list 0 item
    (error) ERR no such key
    
    
    #         LSET
    
    redis> LPUSH job "cook food"
    (integer) 1
    
    redis> LRANGE job 0 0
    1) "cook food"
    
    redis> LSET job 0 "play game"
    OK
    
    redis> LRANGE job  0 0
    1) "play game"
    
    
    # index     
    
    redis> LLEN list                    #       1
    (integer) 1
    
    redis> LSET list 3 'out of range'
    (error) ERR index out of range
    
  • LINSERT key BEFORE|AFTER pivot value: pivotの に valueをリストkeyに します. り は、コマンドが に された 、 が した のリストの さを します.pivotが つからない は、-1を します.keyが しないか、 のリストの は0を します.
    redis> RPUSH mylist "Hello"
    (integer) 1
    
    redis> RPUSH mylist "World"
    (integer) 2
    
    redis> LINSERT mylist BEFORE "World" "There"
    (integer) 3
    
    redis> LRANGE mylist 0 -1
    1) "Hello"
    2) "There"
    3) "World"
    
    
    #          ,         pivot
    
    redis> LINSERT mylist BEFORE "go" "let's"
    (integer) -1                                    #   
    
    
    #          LINSERT   
    
    redis> EXISTS fake_list
    (integer) 0
    
    redis> LINSERT fake_list BEFORE "nono" "gogogog"
    (integer) 0