Redis之事务

简单的说,事务表示一组动作,要么全部执行,要么全部不执行,避免出现数据不一致的情况.

  • Redis提供了简单的事务功能,将一组需要一起执行的命令放到multiexec命令之间 ,multi命令代表事务开始,exec代表事务结束.
>>>multi
>>>sadd user:a:follow user:b
>>>sadd user:a:follow user:b
>>>exec
2.jpg
  • 如果要取消事务的执行,使用discard命令代替exec命令即可.


    3.jpg
  • 如果事务的命令出现错误,不同的错误Redis的处理方法也不同.

如果是语法错误(命令写错等),则会导致整个事务都不执行.

如果是运行时错误,则会导致发生错误之前的代码都会执行,报错的代码和后面的代码不会执行,Redis不支持回滚操作.

  • 有些应用场景需要保证在运行事务之前,事务中的key没有被其他的客户端修改过才执行错误,否则不执行(返回nil),Redis提供watch命令来解决这类问题.
>>>set test "hello"
>>>watch test
>>>multi
>>>append test "python"
>>>append test "redis-py"
>>>set test "moon"       -- 这条命令来自另外一个客户端
>>>exec
(nil)      -- 因为key "test"的值被另外一个客户端改变(watch命令之后,exec命令之前),所以事务不执行.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 8,690评论 0 40
  • 超强、超详细Redis入门教程 转载2017年03月04日 16:20:02 16916 转载自: http://...
    邵云涛阅读 17,541评论 3 313
  • 文章已经放到github上 ,如果对您有帮助 请给个star[https://github.com/qqxuanl...
    尼尔君阅读 6,689评论 0 22
  • redis事务 Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务...
    全能程序猿阅读 6,452评论 0 11
  • 【本教程目录】 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动r...
    徐猿猿阅读 5,814评论 0 35