事務
redis的事務是一組命令的集合。事務同命令一樣都是redis的最小執行單元,一個事務中的命令要麼執行要麼都不執行。
首先需要multi命令來開始事務,用exec命令來執行事務。
127.0.0.1:6379> multi OK 127.0.0.1:6379> hset user:1 name xiaoming QUEUED 127.0.0.1:6379> hset user:1 name daxiong QUEUED 127.0.0.1:6379> exec 1) (integer) 0 2) (integer) 0 127.0.0.1:6379> hgetall user:1 1) "name" 2) "daxiong" 3) "score" 4) "61"
watch
127.0.0.1:6379> set key 1 OK 127.0.0.1:6379> watch key OK 127.0.0.1:6379> set key 2 OK 127.0.0.1:6379> multi OK 127.0.0.1:6379> set key 3 QUEUED 127.0.0.1:6379> exec (nil) 127.0.0.1:6379> get key "2"
生存時間
expire key seconds //設置成功返回1,失敗返回0
127.0.0.1:6379> set session:aabb uid1122 OK 127.0.0.1:6379> expire session:aabb 300 (integer) 1 127.0.0.1:6379> del session:aabb (integer) 1 127.0.0.1:6379> expire session:aabb 300 (integer) 0 127.0.0.1:6379> expire session:aabb 300 (integer) 1 127.0.0.1:6379> ttl session:aabb (integer) 290
ttl key
127.0.0.1:6379> expire session:aabb 300 (integer) 1 127.0.0.1:6379> ttl session:aabb (integer) 290
127.0.0.1:6379> get session:aabb "300" 127.0.0.1:6379> ttl session:aabb (integer) 280 127.0.0.1:6379> persist session:aabb (integer) 1 127.0.0.1:6379> ttl session:aabb (integer) -1
緩存數據
排序
127.0.0.1:6379> zadd set 50 2 40 3 20 1 60 5 (integer) 4 127.0.0.1:6379> sort set 1) "1" 2) "2" 3) "3" 4) "5"
127.0.0.1:6379> sort set desc 1) "5" 2) "3" 3) "2" 4) "1"
BY參數
127.0.0.1:6379> lpush userids 1 2 3 (integer) 3
127.0.0.1:6379> set user_score_1 50 OK 127.0.0.1:6379> set user_score_2 30 OK 127.0.0.1:6379> set user_score_3 70 OK
127.0.0.1:6379> sort userids 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> sort userids by user_score_* 1) "2" 2) "1" 3) "3" 127.0.0.1:6379> sort userids by user_score_* desc 1) "3" 2) "1" 3) "2"
GET參數
127.0.0.1:6379> sort userids by user_score_* get user_name_* 1) "xiaoming" 2) "daxiong" 3) "xiaohong" 127.0.0.1:6379> sort userids by user_score_* desc get user_name_* 1) "xiaohong" 2) "daxiong" 3) "xiaoming"
STORE參數
任務隊列
BRPOP key timeout
優先級隊列
brpop key [key...] timetout
發佈/訂閱模式
PUBLISH CHANNEL MESSAGE
SUBSCRIBE CHANNEL MESSAGE
#向channel.test發佈消息 127.0.0.1:6379> publish channel.test hello (integer) 0 #返回0表明訂閱者爲0,沒有發佈消息 127.0.0.1:6379> publish channel.test hello (integer) 1 #返回n表明訂閱者爲n,成功發佈給1個消費者
#訂閱channel.test消息 127.0.0.1:6379> subscribe channel.test Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel.test" 3) (integer) 1
#接收到來自channel.test的消息 1) "message" 2) "channel.test" 3) "hello"