Redis以开源ANSI C语言编写,是一种支持网络、基于内存的可持续日志型Key-Value数据库,可提供多种语言的API。
原子性
原子性是数据库事务中的特性。 在数据库事务的场景中,原子是指一个事务(transaction )中的所有操作要么全部完成,要么全部没有完成,要么中途不结束。
对Redis来说,命令的原子性是指一个操作的再分割是不可能的,操作要么执行要么不执行。
Redis操作原子性的理由
Redis的操作之所以是原子的,是因为Redis是单线程的。
由于对操作系统的了解不多,从上面的话中无法真正理解Redis操作是原子性的原因,我们将进一步调查进程和线程的概念及其差异。
Redis在并发性中的性能
Redis的API是原子操作,多个指令同时执行也是原子操作吗?
对于Redis来说,运行get、set和eval等API是一个个任务,所有这些任务都由Redis线程负责执行。 任务要么执行成功,要么执行失败,这就是Redis的指令具有原子性的原因。
Redis自身提供的所有API都是原子操作,Redis内的事务实际上必须保证批量操作的原子性。