什么是原子性操作
在多进程(线程)访问共享资源时,能够确保所有其他的进程(线程)都不在同一时间内访问相同的资源,(要么完全执行,要么完全不执行)
简单描述
有个变量X=0,要进行+1操作,步骤如下:
- 读取x;
- 取得+1的计算结果
- 写入x
现在有人进行另一个操作 +2;步骤如下;
- 读取x;
- 取得+2计算结果
- 写入x
如果操作不是原子性的,指令就会错乱,得到的结果可能是1,2,3情况均可能出现;
如果操作是原子性的,就可以保证在进行加1操作的时候其他操作无法插入进来,在完成操作后他才能开始进行他的操作,从而保证数据是可靠的。
redis的原子性
Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关;
Redis命令的原子性使得我们不用考虑并发问题,可以方便的利用原子性自增操作 实现简单计数器功能;