原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 redis的单个command都是原子性的,原因是大部分情况下(不考虑redis 3.x版本的某些情况下使用了多线程),redis是单进程单线程的,客户端的命令请求会被加入到一个内部queue中,redis会按顺序执行它们并返回。因此多个客户端并发请求也是没问题的。
原子性 :一个事务是一个不可分割的最小工作单位,要么都成功要么都失败。
- Redis所有单个命令的执行都是原子性的。
- redis实现事物的原理 a. 批量操作在发送 EXEC 命令前被放入队列缓存 b. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令都不会被执行 c. 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中
- 单个操作都是原子性的,但是多个操作也支持事物,及原子性通过MULTI和EXEC指令包起来
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性
- Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问
本文由 MeiLe 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:2017-12-11 09:06:42