redis深さ冒険(一):基礎データ構造

3077 ワード

Reidsインフラストラクチャ


Stringタイプ

// name   key   codehole   value
/**     */
set name codehole //  key value
get name //   key value 
exists name //key    
del name //     key

/**       */
mset name1 boy name2 girl name3 unknown //    
mget name1 name2 name3 //    

/**    set    */
set name codehole
get name
expire name 5 //5s   

setex name 5 codehole //5s   ,   set + expire
setnx name codehole //   name      set  

/**   */
set age 30 //         
incr age //age  1
incr by age 5 //age  5

List(リスト)

/**     :  */
rpush books python java golang  # python java golang  books  
llen books  # books   
lpop books #    

/**     : */
rpush books python java golang #  
rpop books #  

/**   */
rpush books python java golang 
lindex books 1 #         O(n),   
lrange books 0 -1 #         O(n)   
ltrim books 1 -1 #                     (-2      ),    。           
ltrim books 1 0  #      ,          
llen books  #  

Hash(辞書)

hset books java "think in java" # hash  books   key-value
hgetall books #  books    ,key value   
hlen books   #hash  books   
hget books java #  hash  books    java value
hset books golang "learning go programming"    #  book key golang value
hmset books java "effective java" python "learning python" golang "modern golang programming"  #  set

#         ,hash       key       ,     hincrby, incr,      
hincrby user-laoqian age 1

セット


Redisの集合はjava中のHashSetに相当し,その内部のキー値対は無秩序で一意である.その内部実装は特殊な辞書に相当し、辞書のすべてのvalueは値NULLである.
sadd books python #  set   books    python
sadd books python # key  ,    
sadd books java golang #  set   books     
smembers books #   set   books    key 。              ,  set    
sismember books java #     value    (1:  ,0:   )
scard books  #   books  
spop books #     

Zet(整列集合)


zsetはRedisが提供する最も特色のあるデータ構造であり、面接で面接官が最もよく聞くデータ構造でもある.JavaのSortedSetとHashMapの結合体に似ています.setで内部valueの一意性を保証する一方で、各valueにscoreを付与し、このvalueのソートの重みを表すことができます.
zadd books 9.0 "think in java" # zset  books   score 9.0 value:"think in java"
zrange books 0 -1 #  socore  (    )    value(            )
zrevrange books 0 -1 #  score  (    )  
zcard books #    zset books  value      count()
zscore books "java concurrency" #   books value "java concurrency" score
zrank books "java concurrency" # value "java concurrency"  score(  :    )      (      0)
zrangebyscore books 0 8.91 #   score      (  score 0 8.91   value)
zrangebyscore books -inf 8.91 withscores #   socre   (-∞,8.91] value,    scores
zrem books "java concurrency" #   value "java concurrency"   

コンテナ型データ構造の汎用規則


List/set/hash/zsetの4つのデータ構造はコンテナ型データ構造であり、次の2つの共通ルールを共有しています.
  • create if not exists:コンテナが存在しない場合は、1つを作成してから操作します.
  • drop if no elements:コンテナ内の要素がなくなった場合は、すぐに要素を削除し、メモリ
  • を解放します.
    ps:最近お金の「redis深さ冒険」を勉強していますが、これは勉強ノートですね.