Redisデータ構造

19920 ワード

詳細
1.Redisデータ型の説明

      :
       (String)
         (list)
           (sorted set)
      (hash)
         (set)

Key      :
        ,    ,       

2.Redisデータ構造の文字列タイプ

  
    127.0.0.1:6379> set name andrew
    OK

  
    127.0.0.1:6379> get name
    "andrew"

      
    127.0.0.1:6379> getset name tony
    "andrew"
    127.0.0.1:6379> get name
    "tony"

  
    127.0.0.1:6379> del name
    (integer)1
    127.0.0.1:6379> get name
    (nil)

  incr,         0,          
    127.0.0.1:6379> incr n1
    (integer) 1
    127.0.0.1:6379> get n1
    "1"
    127.0.0.1:6379> set n2 2
    OK
    127.0.0.1:6379> incr n2
    (integer) 3
    127.0.0.1:6379> get n2
    "3"
    127.0.0.1:6379> set n3 andrew
    OK
    127.0.0.1:6379> incr n3
    (error) ERR value is not an integer or out of range

  decr
    127.0.0.1:6379> get n2
    "3"
    127.0.0.1:6379> decr n2
    (integer) 2
    127.0.0.1:6379> decr n4
    (integer) -1

     incrby
    127.0.0.1:6379> get n4
    "-1"
    127.0.0.1:6379> incrby n4 8
    (integer) 7

     decrby
    127.0.0.1:6379> get n4
    "7"
    127.0.0.1:6379> decrby n4 5
    (integer) 2

     append      ,    
    127.0.0.1:6379> append s1 str
    (integer) 3
    127.0.0.1:6379> get s1
    "str"
    127.0.0.1:6379> append s1 abc
    (integer) 6
    127.0.0.1:6379> get s1
    "strabc"

    
    127.0.0.1:6379> keys *
    1) "n1"
    2) "n2"
    3) "s1"
    4) "n3"
    5) "n4"
    127.0.0.1:6379> del n1 n2 n3 n4
    (integer) 4
    127.0.0.1:6379> keys *
    1) "s1"

3.Redisデータ構造のハッシュタイプ

  Hash
String key String Value Map  ,   Hash    4294967295    

  Hash    :
     
    127.0.0.1:6379> hset h1 username andrew
    (integer) 1
    127.0.0.1:6379> hset h1 password 123456
    (integer) 1
    127.0.0.1:6379> hget h1 username
    "andrew"
    127.0.0.1:6379> hget h1 password
    "123456"

     (      )
    127.0.0.1:6379> hmset h2 username tony password 654321
    OK
    127.0.0.1:6379> hmget h2 username
    1) "tony"
    127.0.0.1:6379> hmget h2 password
    1) "654321"
    127.0.0.1:6379> hmget h2 username password
    1) "tony"
    2) "654321"

    
    127.0.0.1:6379> hgetall h2
    1) "username"
    2) "tony"
    3) "password"
    4) "654321"

hdel    ,            
    127.0.0.1:6379> hdel h2 username password
    (integer) 2
    127.0.0.1:6379> hgetall h2
    (empty list or set)

hincrby    
    127.0.0.1:6379> hset h1 age 20
    (integer) 1
    127.0.0.1:6379> hincrby h1 age 5
    (integer) 25

hexists         1     0     
    127.0.0.1:6379> hexists h1 age
    (integer) 1
    127.0.0.1:6379> hexists h1 age2
    (integer) 0

hlen  hash    
    127.0.0.1:6379> hlen h1
    (integer) 3
    127.0.0.1:6379> hlen h2
    (integer) 0

hkeys        
    127.0.0.1:6379> hkeys h1
    1) "username"
    2) "password"
    3) "age"
    127.0.0.1:6379> hkeys h2
    (empty list or set)

hvals       
    127.0.0.1:6379> hvals h1
    1) "andrew"
    2) "123456"
    3) "25"
    127.0.0.1:6379> hvals h2
    (empty list or set)

4.Redisデータ構造のListタイプ

  list:
    ArrayList      
    LinkedList        
          
          
  list    
        、    、    

lpush    ,       
    127.0.0.1:6379> lpush l1 a b c d
    (integer) 4
    127.0.0.1:6379> lpush l1 1 2 3 4
    (integer) 8

lrange           
  1         ,       ,       
    127.0.0.1:6379> lrange l1 0 -1
    1) "4"
    2) "3"
    3) "2"
    4) "1"
    5) "d"
    6) "c"
    7) "b"
    8) "a"
    1   7     
    127.0.0.1:6379> lrange l1 0 6
    1) "4"
    2) "3"
    3) "2"
    4) "1"
    5) "d"
    6) "c"
    7) "b"

rpush       (           )
    127.0.0.1:6379> rpush l2 a b c d
    (integer) 4
    127.0.0.1:6379> rpush l2 1 2 3 4
    (integer) 8
    127.0.0.1:6379> lrange l2 0 -1
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "1"
    6) "2"
    7) "3"
    8) "4"
    127.0.0.1:6379> lrange l2 0 6
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "1"
    6) "2"
    7) "3"

lpop        
rpop        
    127.0.0.1:6379> rpop l2
    "a"
    127.0.0.1:6379> lrange l2 0 -1
    1) "b"
    2) "c"
    3) "d"
    4) "1"
    5) "2"
    6) "3"
    7) "4"
    127.0.0.1:6379> rpop l2
    "4"
    127.0.0.1:6379> lrange l2 0 -1
    1) "b"
    2) "c"
    3) "d"
    4) "1"
    5) "2"
    6) "3"

llen      
    127.0.0.1:6379> llen l2
    (integer) 6
lpushx         
    127.0.0.1:6379> lpushx l2 xx
    (integer) 7
    127.0.0.1:6379> lrange l2 0 -1
    1) "xx"
    2) "b"
    3) "c"
    4) "d"
    5) "1"
    6) "2"
    7) "3"

rpushx         
    127.0.0.1:6379> rpushx l2 yy
    (integer) 8
    127.0.0.1:6379> lrange l2 0 -1
    1) "xx"
    2) "b"
    3) "c"
    4) "d"
    5) "1"
    6) "2"
    7) "3"
    8) "yy"

lpush          
    127.0.0.1:6379> lpush l2 a1 a2 
    (integer) 10
    127.0.0.1:6379> lrange l2 0 -1
    1) "a2"
    2) "a1"
    3) "xx"
    4) "b"
    5) "c"
    6) "d"
    7) "1"
    8) "2"
    9) "3"
    10) "yy"
    127.0.0.1:6379> rpush l2 a3 a4
    (integer) 12
    127.0.0.1:6379> lrange l2 0 -1
    1) "a2"
    2) "a1"
    3) "xx"
    4) "b"
    5) "c"
    6) "d"
    7) "1"
    8) "2"
    9) "3"
    10) "yy"
    11) "a3"
    12) "a4"

lrem                 
          l3
    127.0.0.1:6379> lpush l3 1 3 2 3 2 1 2 1 3
    (integer) 9
    127.0.0.1:6379> lrange l3 0 -1
    1) "3"
    2) "1"
    3) "2"
    4) "1"
    5) "2"
    6) "3"
    7) "2"
    8) "3"
    9) "1"
       2 1
    127.0.0.1:6379> lrem l3 2 1
    (integer) 2
    127.0.0.1:6379> lrange l3 0 -1
    1) "3"
    2) "2"
    3) "2"
    4) "3"
    5) "2"
    6) "3"
    7) "1"
       2 3
    127.0.0.1:6379> lrem l3 -2 3
    (integer) 2
    127.0.0.1:6379> lrange l3 0 -1
    1) "3"
    2) "2"
    3) "2"
    4) "2"
    5) "1"
    2
    127.0.0.1:6379> lrem l3 0 2
    (integer) 3
    127.0.0.1:6379> lrange l3 0 -1
    1) "3"
    2) "1"

lset           
    127.0.0.1:6379> lrange l1 0 -1
    1) "4"
    2) "3"
    3) "2"
    4) "1"
    5) "d"
    6) "c"
    7) "b"
    8) "a"
   0  
    127.0.0.1:6379> lset l1 3 xxxx
    OK
    127.0.0.1:6379> lrange l1 0 -1
    1) "4"
    2) "3"
    3) "2"
    4) "xxxx"
    5) "d"
    6) "c"
    7) "b"
    8) "a"

linsert           
 xxxx      aa
    127.0.0.1:6379> linsert l1 before xxxx aa
    (integer) 9
    127.0.0.1:6379> lrange l1 0 -1
    1) "4"
    2) "3"
    3) "2"
    4) "aa"
    5) "xxxx"
    6) "d"
    7) "c"
    8) "b"
    9) "a"
 xxxx      bb
    127.0.0.1:6379> linsert l1 after xxxx bb
    (integer) 10
    127.0.0.1:6379> lrange l1 0 -1
    1) "4"
    2) "3"
    3) "2"
    4) "aa"
    5) "xxxx"
    6) "bb"
    7) "d"
    8) "c"
    9) "b"
    10) "a"

rpoplpush  A            B    
    127.0.0.1:6379> rpush l4 a b c
    (integer) 3
    127.0.0.1:6379> rpush l5 1 2 3
    (integer) 3
    127.0.0.1:6379> lrange l4 0 -1
    1) "a"
    2) "b"
    3) "c"
    127.0.0.1:6379> lrange l5 0 -1
    1) "1"
    2) "2"
    3) "3"
    127.0.0.1:6379> rpoplpush l4 l5
    "c"
    127.0.0.1:6379> lrange l4 0 -1
    1) "a"
    2) "b"
    127.0.0.1:6379> lrange l5 0 -1
    1) "c"
    2) "1"
    3) "2"
    4) "3"

5.Redisデータ構造のSetタイプ

  Set List      ,Set             
Set           4294967295
  set    :
  /    
        
        
        
        

    
sadd key member [member ...]
  set  
    127.0.0.1:6379> sadd set1 a b c
    (integer) 3
       smembers key
    key    
    127.0.0.1:6379> smembers set1
    1) "c"
    2) "b"
    3) "a"
    127.0.0.1:6379> sadd set1 a d e
    (integer) 2
    127.0.0.1:6379> smembers set1
    1) "c"
    2) "d"
    3) "b"
    4) "a"
    5) "e"
                srem key member [member ...]
    
    127.0.0.1:6379> srem set1 a d
    (integer) 2
    127.0.0.1:6379> smembers set1
    1) "b"
    2) "c"
    3) "e"
       sismember key member
          ,  1    ,  0     。
    127.0.0.1:6379> sismember set1 a
    (integer) 0
    127.0.0.1:6379> sismember set1 b
    (integer) 1
sdiff    
    127.0.0.1:6379> sadd set2 a b c
    (integer) 3
    127.0.0.1:6379> sadd set3 b c d e
    (integer) 4
    127.0.0.1:6379> sdiff set2 set3
    1) "a"
    127.0.0.1:6379> sdiff set3 set2
    1) "d"
    2) "e"
       ,     ,      
sinter    
    127.0.0.1:6379> sinter set2 set3
    1) "c"
    2) "b"
sunion    
    127.0.0.1:6379> sunion set2 set3
    1) "e"
    2) "a"
    3) "b"
    4) "c"
    5) "d"
scard      
    127.0.0.1:6379> smembers set1
    1) "b"
    2) "c"
    3) "e"
    127.0.0.1:6379> scard set1
    (integer) 3
srandmember       
    127.0.0.1:6379> srandmember set1
    "c"
    127.0.0.1:6379> srandmember set1
    "e"
sdiffstore            
    127.0.0.1:6379> smembers set2
    1) "c"
    2) "b"
    3) "a"
    127.0.0.1:6379> smembers set3
    1) "c"
    2) "e"
    3) "d"
    4) "b"
    127.0.0.1:6379> sdiffstore r1 set2 set3
    (integer) 1
    127.0.0.1:6379> smembers r1
    1) "a"
sinterstore            
    127.0.0.1:6379> sinterstore r2 set2 set3
    (integer) 2
    127.0.0.1:6379> smembers r2
    1) "c"
    2) "b"
sunionstore            
    127.0.0.1:6379> sunionstore r3 set2 set3
    (integer) 5
    127.0.0.1:6379> smembers r3
    1) "e"
    2) "a"
    3) "b"
    4) "c"
    5) "d"
  Set    
         
               

6.Redisデータ構造のsorted-setタイプ

  Sorted-Set
Sorted-Set Set   
Sorted-Set               
  Sorted-set    
    
    
    
    
    

zadd    ,        
    127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
    (integer) 3
    sort1    a,b,c      5,4,6
                  ;

zrange      -1       
    127.0.0.1:6379> zrange sort1 0 -1
    1) "b"
    2) "a"
    3) "c"
      ,       
                 ,   
        b      7 
    127.0.0.1:6379> zadd sort1 7 b
    (integer) 0
  zscore  b   
    127.0.0.1:6379> zscore sort1 b
    "7"
       ;
    127.0.0.1:6379> zrange sort1 0 -1
    1) "a"
    2) "c"
    3) "b"
          ,     
    127.0.0.1:6379> zadd sort1 9 d
    (integer) 1
    127.0.0.1:6379> zrange sort1 0 -1
    1) "a"
    2) "c"
    3) "b"
    4) "d"

    zrem
    127.0.0.1:6379> zrem sort1 b
    (integer) 1
    127.0.0.1:6379> zrange sort1 0 -1
    1) "a"
    2) "c"
    3) "d"
zcard           
    127.0.0.1:6379> zcard sort1
    (integer) 3

withscores        
    127.0.0.1:6379> zrange sort1 0 -1 withscores 
    1) "a"
    2) "5"
    3) "c"
    4) "6"
    5) "d"
    6) "9"

zrevrange     
    127.0.0.1:6379> zrevrange sort1 0 -1 withscores
    1) "d"
    2) "9"
    3) "c"
    4) "6"
    5) "a"
    6) "5"
      
    127.0.0.1:6379> zadd sort1 10 e  5 f
    (integer) 2
zremrangebyrank           3 
    127.0.0.1:6379> zremrangebyrank sort1 0 2
    (integer) 3
    127.0.0.1:6379> zrange sort1 0 -1 withscores
    1) "d"
    2) "9"
    3) "e"
    4) "10"
     
    127.0.0.1:6379> zadd sort1 11 f 16 g 18 h
    (integer) 3
    127.0.0.1:6379> zrange sort1 0 -1 withscores
    1) "d"
    2) "9"
    3) "e"
    4) "10"
    5) "f"
    6) "11"
    7) "g"
    8) "16"
    9) "h"
    10) "18"
zremrangebyscore             
    127.0.0.1:6379> zremrangebyscore sort1 10 16
    (integer) 3
    127.0.0.1:6379> zrange sort1 0 -1 withscores
    1) "d"
    2) "9"
    3) "h"
    4) "18"
     
    127.0.0.1:6379> zadd sort1 20 i 23 j 30 k
    (integer) 3
    127.0.0.1:6379> zrange sort1 0 -1 withscores
    1) "d"
    2) "9"
    3) "h"
    4) "18"
    5) "i"
    6) "20"
    7) "j"
    8) "23"
    9) "k"
    10) "30"

zrangebyscore           
    127.0.0.1:6379> zrangebyscore sort1 18 23 withscores 
    1) "h"
    2) "18"
    3) "i"
    4) "20"
    5) "j"
    6) "23"
limit           
    127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
    1) "h"
    2) "18"
    3) "i"
    4) "20"

zincrby       
    127.0.0.1:6379> zincrby sort1 5 h
    "23"
    127.0.0.1:6379> zrange sort1 0 -1 withscores
    1) "d"
    2) "9"
    3) "i"
    4) "20"
    5) "h"
    6) "23"
    7) "j"
    8) "23"
    9) "k"
    10) "30"
zcount             
    127.0.0.1:6379> zcount sort1 20 23
    (integer) 3
Sorted-Set    :           ,      

7.RedisのKeys共通動作

keys *     key
    127.0.0.1:6379> keys *
    1) "sort1"
    2) "l2"
    3) "set2"
    4) "r1"
    5) "h1"
    6) "n2"
    7) "l3"
    8) "r2"
    9) "s1"
    10) "set3"
    11) "set1"
    12) "r3"
    13) "n"
    14) "n3"
    15) "nn"
    16) "l1"
     s   key
     s*,*      
    127.0.0.1:6379> keys s*
    1) "sort1"
    2) "set2"
    3) "s1"
    4) "set3"
    5) "set1"
    s              key
    127.0.0.1:6379> keys s?
    1) "s1"

del  key
    127.0.0.1:6379> del n2 n3 nn
    (integer) 3
exists  key    ,1    ,0     。
    127.0.0.1:6379> exists n2
    (integer) 0
    127.0.0.1:6379> exists l1
    (integer) 1
get    
    127.0.0.1:6379> get n
    "1"
rename key   
    127.0.0.1:6379> rename n n2
    OK
    127.0.0.1:6379> get n
    (nil)
    127.0.0.1:6379> get n2
    "1"
expire  n2    
    127.0.0.1:6379> expire n2 120
    (integer) 1
ttl      
    127.0.0.1:6379> ttl n2
    (integer) 116
type    
    127.0.0.1:6379> type n2
    string
    127.0.0.1:6379> type l1
    list
    127.0.0.1:6379> type s1
    string
    127.0.0.1:6379> type sort1
    zset