在Redis中,单个命名是具有原子性的,但是整个事务不具有原子性。因为整个事务是一系列命令组成的,一旦这些命令当中某些明令出现运行时异常,其他命令依然可以执行成功,因此整个事务不具有原子性。另外可以用watch命令实现乐观锁
第一个线程
OK
127.0.0.1:6379> watch money
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> decrby money 10
QUEUED
127.0.0.1:6379> incrby money 10
QUEUED
第二个线程
127.0.0.1:6379> get money
"80"
127.0.0.1:6379> set money 200
OK
127.0.0.1:6379> get money
"200"
127.0.0.1:6379>
回到第一个线程
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379>