[redis] redis Watch机制和乐观锁
1. 并发竞争
当有大量对同一数据的并发请求时。会产生写竞争。
解决思路:
1)如果并发量比较低,则采用数据库事务隔离(数据库锁等)
2)通常后台会引入消息队列来进行削峰,但并不能提升性能。
3)可以在缓存(redis)中保存数据,并加锁来保证数据幂等性。如果使用悲观锁,则可能造成响应等待时间较长。
2. Watch机制
watch的作用即监控一个 (或多个)key,其中有一个键-值被修改后,之后的事务会被停止执行。
也即若事务执行前键值已经被修改,则事务会失败。
这样就实现了近似CAS机制的乐观锁。这样可以避免使用悲观锁而提高吞吐能力。