127.0.0.1:6379>set name csnz
OK
127.0.0.1:6379> get name
"csnz"127.0.0.1:6379>watch name
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>set name CSNZ
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>exec1)"csnz"2) OK
3)"CSNZ"
多线程修改值,使用watch当做redis的乐观锁
线程一:
127.0.0.1:6379>set name csnz
OK
127.0.0.1:6379>watch name
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>set name CSNZ
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
此时线程一还没执行事务
新开一个线程作为线程二 、执行如下语句
127.0.0.1:6379> get name
"csnz"127.0.0.1:6379>set name csnz666
OK
127.0.0.1:6379>set name csnz
OK
127.0.0.1:6379>watch name
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>set name CSNZ
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>exec(nil)127.0.0.1:6379> unwatch
OK
127.0.0.1:6379>watch name
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>set name CSNZ
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)>exec1)"csnz666"2) OK
3)"CSNZ"