开心一笑
别人说我心狠手辣,我舔了一下自己的手,给辣哭了。。。
提出问题
Redis事务如何实现???
解决问题
例一:Redis事务简单用法
127.0.0.1:6379> keys *
1) "MyRedis"
#事务开始
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set MyRedis "change MyRedis one"
#命令会加入队列中
QUEUED
127.0.0.1:6379> set MyRedis "change MyRedis two"
#命令会加入队列中
QUEUED
#事务结束
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get MyRedis
"change MyRedis two"
例二:如果Redis事务中,EXEC调用之后失败出现的错误
127.0.0.1:6379> set ay_test "one"
OK
#事务开始
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ay_test "two"
QUEUED
127.0.0.1:6379> set ay_test "three"
QUEUED
#sadd 这里会出现错误
127.0.0.1:6379> sadd ay_test "four"
QUEUED
127.0.0.1:6379> set ay_test "five"
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) (error) WRONGTYPE Operation against a key holding the wrong kind of value
4) OK
127.0.0.1:6379> get ay_test
"five"
127.0.0.1:6379>
例三:语法错误的情况,这时,事务里的所有命令都不会执行
127.0.0.1:6379> set ay_test "one"
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set ay_test "two"
QUEUED
127.0.0.1:6379> set ay_test "three"
QUEUED
127.0.0.1:6379> st ay_test "four"
(error) ERR unknown command 'st'
127.0.0.1:6379> st ay_test "five"
(error) ERR unknown command 'st'
127.0.0.1:6379> set ay_test "six"
QUEUED
127.0.0.1:6379> set ay_test "seven"
QUEUED
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get ay_test
"one"
读书感悟
来自《肖申克救赎》
- 人生可以归结为一种简单的选择:不是忙着活,就是忙着死。
- 有的鸟是不会被关住的,因为它们的羽毛太美丽了!
- 看了这部电影我与信念、自由、友谊交了朋友。