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的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,391评论 23 625
  • redis事务 Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务...
    全能程序猿阅读 6,464评论 0 11
  • 分布式缓存技术PK:选择Redis还是Memcached? 经平台同意授权转载 作者:田京昆(腾讯后台研发工程师)...
    meng_philip123阅读 69,003评论 7 60
  • Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能, 本章首先...
    binge1024阅读 3,424评论 0 2
  • 我曾经埋怨过谁 我曾经有的预感 没想过她会是她 他终究也会变了 追寻她的路上 我也有过幻想 在每一个苏醒的清晨 在...
    纪颜阅读 1,183评论 0 1