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这个值。