大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop

HDFS

MapReduce

Hive

Flume

Sqoop

Zookeeper

HBase

Redis (正在更新)

章节内容

上一节我们完成了如下的内容:


bitmap 位操作类型

geo 空间类型 空间计算 Z阶曲线 Base32编码

Stream类型 消息队列

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个大数据的学习环境,供我学习。

之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。


2C4G 编号 h121

2C4G 编号 h122

2C2G 编号 h123

发布订阅

基本简介

Redis提供了订阅发布的功能,可以用于消息的传输

  • 发布者订阅者都是Redis的客户端Channel则为Redis的服务端
  • 发布者将消息发送到某个频道,订阅了这个频道的订阅者就能收到这条消息。

Subscribe

Redis客户端1:订阅频道1、订阅频道2

执行完之后,程序会阻塞住。

代码实现如下:

root@h121:/usr/redis/bin# ./redis-cli
127.0.0.1:6379> subscribe ch1 ch2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ch1"
3) (integer) 1
1) "subscribe"
2) "ch2"
3) (integer) 2

Publish

Redis客户端2:将消息发布到频道1、频道2

root@h121:/usr/redis/bin# ./redis-cli
127.0.0.1:6379> publish ch1 hello!
(integer) 1
127.0.0.1:6379> publish ch2 hellworld!
(integer) 1
127.0.0.1:6379> 

观察结果

此时查看客户端1,可以看到消息已经拿到了:

127.0.0.1:6379> subscribe ch1 ch2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ch1"
3) (integer) 1
1) "subscribe"
2) "ch2"
3) (integer) 2
1) "message"
2) "ch1"
3) "hello!"
1) "message"
2) "ch2"
3) "hellworld!"

使用场景

哨兵模式 哨兵之间通过发布与订阅的方式与Redis主服务器和从服务器进行通信。

Redisson 是一个分布式框架,分布式锁释放时,是使用发布订阅的方式。

事务相关

事务(Transaction),是指为单个逻辑工作单元执行一系列的操作。


ACID

Atomic(原子性):构成事务所有操作必须是一个逻辑单元,要么全部执行,要么全部失败。

Consistency(一致性):数据库在事务执行前后状态都必须是稳定的或者一致的

Isolation(隔离性):事务之间不会互相影响

Durability(持久性):事务执行成功后必须全部写入磁盘

Redis事务

Redis事务通过multi、exec、discard、watch四个命令来完成的

Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合

Redis将命令集合序列化并确保处于同一个事务的命令集合连续且不被打断的执行

Redis不支持回滚操作

事务相关指令

multi:用于标记事务块的开始,Redis会将后续的命令逐个放入队列中,然后使用exec原子化执行这个命令队列。

exec:执行命令队列

discard:清除命令队列

watch:监视key

unwatch:清除监视key

实现代码如下:

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set s1 22
QUEUED
127.0.0.1:6379(TX)> hset set1 name wzk
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) (integer) 1
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set s2 22
QUEUED
127.0.0.1:6379(TX)> hset set2 name kangkang
QUEUED
127.0.0.1:6379(TX)> discard
OK
127.0.0.1:6379> exec
(error) ERR EXEC without MULTI
127.0.0.1:6379> 

Redis 弱事务

Redis语法错误时,会导致整个任务的命令在队列里都清除

127.0.0.1:6379(TX)> set ss 111
QUEUED
127.0.0.1:6379(TX)> seta cuowu
(error) ERR unknown command `seta`, with args beginning with: `cuowu`, 
127.0.0.1:6379(TX)> set m2 222
QUEUED
127.0.0.1:6379(TX)> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> 

Redis事务 为什么不能回滚

  • 大多数事务的失败都是语法错误或者类型错误,在开发阶段就可以预料的
  • 为了性能方面就忽略了事务 回滚需要历史版本记录
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
20天前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
31 0
|
21天前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
40 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
21天前
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
33 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
21天前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
29 3
|
21天前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
21 3
|
21天前
|
消息中间件 缓存 NoSQL
大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey
大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey
37 2
|
21天前
|
设计模式 NoSQL 网络协议
大数据-48 Redis 通信协议原理RESP 事件处理机制原理 文件事件 时间事件 Reactor多路复用
大数据-48 Redis 通信协议原理RESP 事件处理机制原理 文件事件 时间事件 Reactor多路复用
33 2
|
21天前
|
缓存 分布式计算 NoSQL
大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念
大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念
41 2
|
21天前
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
21 2