redis入門から入土まで
56590 ワード
String動作
List
Set
Zset
取引
redisトランザクションの場合、コマンドのセットである複数のコマンドを一度に実行できます.redisトランザクションのすべてのコマンドはシーケンス化され、他のコマンドに挿入されずに順次シリアル化され、割り込まれません.すなわち、
コード作成エラーやコマンドエラーなどのトランザクションの
redisの楽観的なロックの実現
未完待機
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]>
未完待機