《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计

系列文章目录

第二十八章 分布式锁框架-Redisson
第二十四章 Spring boot 操作 Redis
第二十三章 Redis RDB AOF
第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计
第二十章 Redis连接指令 客户端指令 服务器指令
第十九章 Redis key
第十八章 Redis查看配置文件和数据类型
第十七章 Redis下载与安装

《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计_第1张图片


文章目录

  • 系列文章目录
  • 前言
  • 1、发布订阅
    • 1.1、订阅消息
    • 1.2、发布者
    • 1.3、常用命令
  • 2、事务
    • 2.1、事务命令
  • 3、HyperLoglog数据类型
    • 3.1、常用命令


前言

本章节讲解Redis发布订阅、事务。

1、发布订阅

Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。
《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计_第2张图片

1.1、订阅消息

《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计_第3张图片

1.2、发布者

《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计_第4张图片

1.3、常用命令

命令 说明
PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合指定模式的频道。
PUBSUB subcommand [argument [argument …]] 查看发布/订阅系统状态,可选参数
1) channel 返回在线状态的频道。
2) numpat 返回指定模式的订阅者数量。
3) numsub 返回指定频道的订阅者数量。
PUBLISH subcommand [argument [argument …]] 将信息发送到指定的频道。
PUNSUBSCRIBE [pattern [pattern …]] 退订所有指定模式的频道。
SUBSCRIBE channel [channel …] 订阅一个或者多个频道的消息。
UNSUBSCRIBE [channel [channel …]]退订指定的频道。

每个模式以*作为匹配符

2、事务

Redis 事务具有两个重要特性:

  • 单独的隔离操作事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端发送来的命令打断。
  • 不保证原子性在 Redis 的事务中,如果存在命令执行失败的情况,那么其他命令依然会被执行,不支持事务回滚机制。

2.1、事务命令

命令 说明
MULTI 开启一个事务
EXEC 执行事务中的所有命令
WATCH key [key …] 在开启事务之前用来监视一个或多个key 。如果事务执行时这些 key 被改动过,那么事务将被打断。
DISCARD 取消事务。
UNWATCH 取消 WATCH 命令对 key 的监控。

事务可以理解为一个批量执行 Redis 命令的脚本,但这个操作并非原子性操作,也就是说,如果中间某条命令执行失败,并不会导致前面已执行命令的回滚,同时不会中断后续命令的执行(不包含监听 key 的情况)
《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计_第5张图片
事务开启前监听某个key,在事务中尝试修改他,会导致事务中断
《微服务实战》 第二十一、二十二章 Redis发布订阅、事务;HyperLoglog基数统计_第6张图片

3、HyperLoglog数据类型

HyperLoglog 是 Redis 重要的数据类型之一,它非常适用于海量数据的计算、统计,其特点是占用空间小,计算速度快。
基数定义:一个集合中不重复的元素个数就表示该集合的基数,比如集合 {1,2,3,1,2} ,它的基数集合为 {1,2,3} ,所以基数为 3。HyperLogLog 正是通过基数估计算法来统计输入元素的基数。
使用场景:
统计网站的UV

3.1、常用命令

命令 说明
PFADD key element [element …] 添加指定元素到 HyperLogLog key 中。
PFCOUNT key [key …] 返回指定 HyperLogLog key 的基数估算值。
PFMERGE destkey sourcekey [sourcekey …] 将多个 HyperLogLog key 合并为一个 key。

你可能感兴趣的:(redis,发布订阅,事务)