Redis之实现事务简单实例

开心一笑

别人说我心狠手辣,我舔了一下自己的手,给辣哭了。。。

提出问题

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"
Redis之实现事务简单实例_第1张图片
美图

读书感悟

来自《肖申克救赎》

  • 人生可以归结为一种简单的选择:不是忙着活,就是忙着死。
  • 有的鸟是不会被关住的,因为它们的羽毛太美丽了!
  • 看了这部电影我与信念、自由、友谊交了朋友。

你可能感兴趣的:(Redis之实现事务简单实例)