🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 消息订阅 * 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 * 客户端可以订阅任意数量的频道 ## 事务 * 批量操作在发送 EXEC 命令前被放入队列缓存。 * 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。 * 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。 * 所有的命令要么全执行,要么全不执行。 * > 开始事务 > 命令入队 > 执行事务 > 单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。 > 事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。 ## GEO * Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。 ## Stream * Redis Stream 是 Redis 5.0 版本新增加的数据结构。 * Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。 ## 管道 >* 基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤: >* 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 >* 服务端处理命令,并将结果返回给客户端。 ## 事务和管道的区别 >[info] * 事务与pipeline都是不支持回滚; > * 中间命令出现错误,不会影响前面已经执行成功的命令,也不会中断后面的命令继续执行; > * 事务可以实现原子性和隔离性, > * pipeline中的命令放到redis的排队执行队列中时可能会被拆开,即pipeline中的多个命令被其他命令插队。