Redis 事务 与 分布式锁

  Redis 事务实现需要用到 MULTI 和 EXEC 两个命令,事务开始先发送MULTI命令,然后执行事务中处理的命令,最后发送EXEC命令表示事务结束。

  Redis 事务不支持回滚操作

  与事务相关的命令还有WATCH 和 UNWATCH,如果WATCH了某个键,那么再执行事务如果修改该键,那么后面的事务会被取消。UNWATCH 可以在 WATCH之后MULTI之前取消掉某个键的监控。

  分布式锁

    保证分布式系统之间同步访问一个共享资源,需要通过互斥的方式来保证一致性。

    创建锁:

      Redis主要使用SETNX命令(set if not exists)。

      语法:SETNX key value

      功能:当且仅当key不存在,将key的值设置为value,并返回1;如果key已经存在,则不做任何操作,并返回0. 有点类似java的CAS操作。

      需要设置过期时间,防止加锁的客户端挂掉或超时。

    释放锁:

      使用WATCH命令,在执行完业务后比较key的值,如果没有改变则del这个值。

    

 

posted @ 2018-04-04 15:42  lion_eagle  阅读(1177)  评论(0编辑  收藏  举报