前言
上一篇介绍了 Redis 的内存管理。这节开始介绍 Redis 并发方面的问题。
Redis 的单个命令是原子的,但是一个业务操作可能包含多条命令,比如以下场景:客户端查询值,并递增,在高并发场景下就可能出现并发问题,导致数据不一致。
client1 get n => 1
client2 get n => 1
client1 set n => 2
client2 set n => 2
为了保证并发访问的正确性,Redis 提供了三种方法,原子操作、分布式锁、事务。
原子操作
为了实现并发控制要求的临界区代码互斥执行,Redis 的原子操作采用了两种方法:单命令操作和 Lua 脚本。
单命令操作
R