#挑战每日一条沸点#
Redis的并发竞争问题如何解决?
1、分布式锁,确保同一时间,只能有一个系统实例在操作某个key,别人都不允许读和写。每次写之前,先判断一下当前这个value的时间戳是否比缓存里的value的时间戳要更新,如果更新,那么可以写;如果更旧,就不能用旧的数据覆盖新的数据(写入缓存的数据都是从mysql中查处来的。一开始写入mysql的时候必须保存一个时间戳。从mysql查出来的时候,时间戳也需要带上)
2、乐观锁:Redis使用乐观锁来解决竞争问题,乐观锁是一种非阻塞机制,它假设并发问题不会发生,但在执行操作之前会检查数据是否发生了变化。如果数据发生了变化,操作将被回滚并重新尝试。
3、事务:Redis提供了原子事务,可以将多个操作作为一个事务执行,从而避免了并发问题。在事务执行期间,其他客户端无法访问被事务锁定的键,直到事务执行完毕。
展开
评论