Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
监控!watch
悲观锁:什么时候都会出问题,无论做什么都会加锁
乐观锁:什么时候都不会出问题,所以不会加锁
更新数据的时候判断一下,是否有人修改过数据
Redis 一般使用乐观锁
获取version
更新的时候比较version
set money 100
set out 0
watch money # 监视money对象
multi # 事务正常结束,数据期间没有发生变动,则正常执行
DECRBY money 10
INCRBY out 10
exec
# 输出结果
# 1)(integer)80
# 2)(integer)20
watch money
multi
DECRBY money 10
INCRBY out 10
exec # 执行之前如果有其他的线程改变了Redis中的数据
# 输出结果:nil
# 如果还想执行
# 可以
unwatch money
watch money
# 然后可以继续执行其他命令或事物
Redis 多线程可以使用watch实现乐观锁