Redis 事务学习有感
Redis
远程字典服务器(redis)是由 Salvatore Sanfilippo 编写的键值存储系统。它是一个跨平台的非关系数据库。Redis 是一个用 ANSI C 语言编写的开源键值数据库,符合 BSD 协议,支持网络,可以基于内存、分布式和可选持久性,并提供多种语言的 API。
Hash
Redis hash 是字符串类型的字段和值的映射表。哈希特别适合存储对象。redis 中的每个哈希可以存储 232-1 个键值对(超过 40 亿)。
pub/sub
Redis 发布/订阅(pub/sub)是一种消息通信模式:发送方(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。下图显示了通道 1 与订阅此通道的三个客户端 client2、client5 和 client1 之间的关系:
当通过 publish 命令将新消息发送到通道 1 时,该消息将发送到订阅该消息的三个客户端:
Redis 事务
Redis 事务可以一次执行多个命令,有以下三个重要保证:批处理操作在发送 exec 命令之前放入队列缓存。收到 exec 命令后,输入事务执行。事务中任何命令的执行都失败,其余命令仍在执行。在事务执行期间,其他客户端提交的命令请求不会插入到事务执行命令序列中。交易从开始到执行经历以下三个阶段:启动事务。命令加入团队。执行交易。
单个 redis 命令的执行是原子的,但 redis 没有添加任何机制来维护事务的原子性,因此 redis 事务的执行不是原子的。事务可以理解为打包的批处理执行脚本,但批处理指令不是原子化操作。中间指令的故障不会导致前一条指令回滚,也不会导致后续指令不回滚。
版权声明: 本文为 InfoQ 作者【黎燃】的原创文章。
原文链接:【http://xie.infoq.cn/article/71813ef1ac3a3399e55a8227f】。文章转载请联系作者。
评论