redis入門から入土まで

56590 ワード

String動作 set key value
127.0.0.1:6379> set age 12 
OK
get key; del key
127.0.0.1:6379> get name  
"zhangsan"
127.0.0.1:6379> expire name 12 
(integer) 1
127.0.0.1:6379> ttl name  
(integer) 9
. key , setkey
127.0.0.1:6379> append k1 adsfa
(integer) 7
127.0.0.1:6379> get k1
"v1adsfa"
key; keys *
127.0.0.1:6379> keys *
1) "sex"
2) "k1"
3) "age"
127.0.0.1:6379>
127.0.0.1:6379> append k1 ",sadfjas"
(integer) 15
127.0.0.1:6379> get k1
"v1adsfa,sadfjas"
key strlen key
127.0.0.1:6379> strlen k1 
(integer) 15
incr key 1; incrby key num, num
127.0.0.1:6379> incrby num 3 
(integer) 11
127.0.0.1:6379> decrby num 5  
(integer) 6
range
127.0.0.1:6379> set k1 jaskjdfklasdkl  //    
OK
127.0.0.1:6379> getrange k1 0 5  //      ,  [0,3]   
"jaskjd"
127.0.0.1:6379> getrange k1 0 -1 //        
"jaskjdfklasdkl"

127.0.0.1:6379> set k2 jzhansgan
OK
127.0.0.1:6379> get k2
"jzhansgan"
127.0.0.1:6379> setrange k2 2 LL   //            
(integer) 9
127.0.0.1:6379> get k2
"jzLLnsgan"

setex (set with expire) setnx (set if not exist) ; setnx key value , , , .( 1, 0)
127.0.0.1:6379> setex k3 40 "hello" //   k3  , 40    
OK
127.0.0.1:6379> ttl k3 //       
(integer) 37
127.0.0.1:6379> get k3

127.0.0.1:6379> setnx k3 "redis" //  k3   ,   k3
(integer) 1
127.0.0.1:6379> get k3
"redis"
127.0.0.1:6379> setnx k3 "mysql" //   k3  ,     ,   1  true,  0 false
(integer) 0
127.0.0.1:6379>

mset , mget , , ,
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k3"
2) "name"
3) "k1"
4) "k2"
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> 

mset
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 23
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "23"
127.0.0.1:6379> 

getset : get, set .( key , nil, , .)
127.0.0.1:6379> getset sql redis   //  sql,     nil
(nil)
127.0.0.1:6379> get sql //  sql        , redis
"redis"
127.0.0.1:6379> getset sql oracle  //  sql   redis.       oracle
"redis"
127.0.0.1:6379> get sql
"oracle"
127.0.0.1:6379> 


List : lpush / rpush / lrange
127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> rpush list four
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "four"

: lpop key / rpop key
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "four"
127.0.0.1:6379> lpop list //   list      
"three"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
3) "four"
127.0.0.1:6379> rpop list //   list       
"four"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> 

llen , index key index
127.0.0.1:6379> llen list  //        
(integer) 2
127.0.0.1:6379> lindex list 1 //         
"one"

lrem list value
127.0.0.1:6379> lrange list 0 -1
1) "one"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lrem list 1 one //  list  1 one
(integer) 1
127.0.0.1:6379> lrange list 0 -1  
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> 

ltrim
127.0.0.1:6379> lrange list  0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> ltrim list  1 2 //            ,   lsit     ,        
OK
127.0.0.1:6379> lrange list  0 -1 
1) "two"
2) "one"

rpoplpush ,
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> rpoplpush list list1 //   list        ,      list1 
"1"
127.0.0.1:6379> lrange list 0 -1 //   list  
1) "3"
2) "2"
127.0.0.1:6379> lrange list1 0 -1  //         list1   ,      
1) "1"
127.0.0.1:6379> 


Set sadd ; smembers ; scard ; srem
127.0.0.1:6379> clear
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd name zhangsna //    
(integer) 1
127.0.0.1:6379> smembers name
1) "zhangsna"
127.0.0.1:6379> sadd name sdf
(integer) 1
127.0.0.1:6379> sadd name sdsfsdf
(integer) 1
127.0.0.1:6379> smembers name  //   
1) "sdsfsdf"
2) "sdf"
3) "zhangsna"
127.0.0.1:6379> scard name  //   set        
(integer) 3
127.0.0.1:6379> 
srandmember ( , , )
127.0.0.1:6379> srandmember name
"zhangsna"
127.0.0.1:6379> srandmember name //  name  set           
"sdf"
127.0.0.1:6379> srandmember name 2 //  name  set              
1) "sdsfsdf"
2) "zhangsna"
127.0.0.1:6379> srandmember name 2
1) "sdsfsdf"
2) "sdf"
127.0.0.1:6379> srandmember name 2
1) "sdf"
2) "zhangsna"

spop set ( , )
127.0.0.1:6379> smembers name
1) "sdsfsdf"
2) "sdf"
3) "zhangsna"
127.0.0.1:6379> spop name  //  set         
"sdf"
127.0.0.1:6379> spop name  //  set         
"zhangsna"
127.0.0.1:6379> smembers name   //  set     
1) "sdsfsdf"
127.0.0.1:6379> 

: :sdiff key1 key2; :sinter key1 key2; :sunion key1 key2; :smove Hash hset ; hget ; hmset k-v; hgetall ; hdel key
127.0.0.1:6379> hset myHash age 12   //     K-V
(integer) 1
127.0.0.1:6379> hget myHash name  //    K-V
"zhangsan"
127.0.0.1:6379> hmset myHash age lisi age 23  //     K-V
OK
127.0.0.1:6379> hgetall myHash   //     K-V
1) "name"
2) "zhangsan"
3) "age"
4) "23"
127.0.0.1:6379> hdel myHash name //     key
(integer) 0
127.0.0.1:6379> hgetall myHash
1) "age"
2) "23"


hlen hash k-v ; hexists key
127.0.0.1:6379> hlen myHash
(integer) 1
127.0.0.1:6379> hgetall myHash
1) "age"
2) "23"
127.0.0.1:6379> hexists myHash age //       age
(integer) 1
127.0.0.1:6379> hexists myHash name
(integer) 0
127.0.0.1:6379> 

hkeys key , hvals value
127.0.0.1:6379> hgetall myHash
1) "age"
2) "23"
3) "sex"
4) "man"
127.0.0.1:6379> hkeys myhash
(empty list or set)
127.0.0.1:6379> hkeys myHash  //   myHash    key
1) "age"
2) "sex"
127.0.0.1:6379> hvals myHash //   myHash    value
1) "23"
2) "man"


Zset
   :zadd	key	score	member	[score1	member1]
   :zrem	key	member	[member1]
    (  ):zrange	key	start	stop	[withscores]
    (  ):zrevrange	key	start	stop	[withscores]
    (  ):zrangebyscore	key	min	max	[withscore	limit]
    (  ):zrevrangebyscore	key	max	min	[withscore	limit]
     (  ):zremrangebyrank	key	start	stop
     (  ):zremrangebyscore	key	min	max
      :zcard	key	|	zcount	key	min	max
      :	zinterstore	destination	numkeys	key	key1
      :zunionstore	destination	numkeys	key	key1
    (  ):zrank	key	member
    (  ):zrevrank	key	member
score   :zscore	key	member

取引
redisトランザクションの場合、コマンドのセットである複数のコマンドを一度に実行できます.redisトランザクションのすべてのコマンドはシーケンス化され、他のコマンドに挿入されずに順次シリアル化され、割り込まれません.すなわち、 , 、 、 。 MULTI:1つのトランザクションブロックの開始をマークするEXEC:すべてのトランザクションブロック内のコマンドを実行するDISCARD:トランザクションをキャンセルし、トランザクションブロック内のすべてのコマンドを実行することを放棄するUNWATCH:WATCHコマンドのすべてのkeyに対する監視をキャンセルするWATCH key [key . . . ]:1つ(または複数)のkeyを監視し、トランザクションが実行される前にこのkeyが他のコマンドによって変更された場合、トランザクションは中断されます.EXECが実行されると、これまでの監視所はキャンセルされます.redis :個別の独立アクション:トランザクション内のすべてのコマンドは、シーケンス化され、順次実行されることが多い.トランザクションは、実行中に他のクライアントから送信されたコマンド要求によって分離レベルのない概念を中断されません.キュー内のコマンドがコミットされないまで実際に実行されません.トランザクションがコミットされる前に、どのコマンドも実際に実行されないためです.つまり、「トランザクション内のクエリではトランザクション内の更新が表示され、トランザクション外のクエリでは表示されない」という問題は存在しません.原子性が保証されていないという問題です.Redisは同じトランザクションでコマンドの実行に失敗した場合、その後のコマンドは実行され、ロールバックされません.トランザクションの三部作:オン:MULTIでトランザクションのエンキューを開始:複数のコマンドをトランザクションにエンキューします.これらのコマンドを受け取るとすぐに実行されるのではなく、実行待ちのトランザクションキューに入れて実行します.EXECコマンドによってトランザクションがトリガーされます.
127.0.0.1:6379[1]> multi  //     
OK
127.0.0.1:6379[1]> set k1 v1  
QUEUED
127.0.0.1:6379[1]> set k2 v2
QUEUED
127.0.0.1:6379[1]> get k1
QUEUED
127.0.0.1:6379[1]> set k3 v3
QUEUED
127.0.0.1:6379[1]> exec  //     
1) OK
2) OK
3) "v1"
4) OK

discard取引の取消
127.0.0.1:6379[1]> multi  //     
OK
127.0.0.1:6379[1]> set k1 v1
QUEUED
127.0.0.1:6379[1]> set k2 v1
QUEUED
127.0.0.1:6379[1]> discard  //    
OK
127.0.0.1:6379[1]> get k2 //                 
(nil) //      ,        ,      
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> 


コード作成エラーやコマンドエラーなどのトランザクションの については、トランザクションのすべてのコマンドが である.一方、運転時異常については、 (コマンドの実行は正しいが、結果エラーによる)があると、対応する結果エラーの箇所に異常が投げ出す、他のコマンドは となる.
redisの楽観的なロックの実現
//   1    k1  ,         .
127.0.0.1:6379[1]> set k1 1 //   k1
OK
127.0.0.1:6379[1]> watch k1 // #  k1 (       k1,          k1  )
OK
127.0.0.1:6379[1]> set k1 3 //  k1,   k1           
OK
127.0.0.1:6379[1]> multi //     
OK
127.0.0.1:6379[1]> set k1 4  //   k1
QUEUED
127.0.0.1:6379[1]> exec  //     , k1       4,k1     3,         k1      
(nil)
127.0.0.1:6379[1]> get k1 
"3"
//         ,            .
---------------------------------------------
//    2     k1        ,   k1   
127.0.0.1:6379[1]> get k1
"1"
127.0.0.1:6379[1]> watch k1
OK
127.0.0.1:6379[1]> get k1
"1"
127.0.0.1:6379[1]> multi
OK
127.0.0.1:6379[1]> set k1 5
QUEUED
127.0.0.1:6379[1]> exec
1) OK
127.0.0.1:6379[1]> get k1
"5"
127.0.0.1:6379[1]> 


未完待機