讲师中心 微信公众号
AI工具推荐 视频效率加速

讲解Redis发布订阅演示、事务演示、持久化

小静酱_5518

小静酱_5518

发布时间:2021-02-23 09:54:22

|

2361人浏览过

|

来源于CSDN

转载

讲解Redis发布订阅演示、事务演示、持久化

推荐(免费):redis教程

文章目录

  • 一、Redis发布订阅介绍
  • 二、Redis发布订阅演示
  • 三、Redis中的事务
  • 四、转账功能-Redis事务演示
  • 五、转账功能升级版-watch
  • 六、事务的错误处理
    • 业务逻辑错误
    • 语法错误
  • 七、Redis持久化
    • RDB持久化
    • AOF持久化

一、Redis发布订阅介绍

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。

在这里插入图片描述

应用场景:

  • ①构建实时消息系统,比如普通的即时聊天,群聊等功能。
  • ②在一个博客网站中,有n多个粉丝订阅了你,当你发布新文章,就可以推送消息给粉丝们。
  • ③微信公众号模式。

二、Redis发布订阅演示

发布订阅语法
订阅频道:

  • subscribe channel1 [channel2 ...]     订阅给定的一个或多个频道的信息

  • psubscribe pattern1 [pattern2 ...]    订阅一个或多个符合给定模式的频道。
    在这里插入图片描述
    发布频道:

  • publish channel message           将信息发送到指定的频道。
    在这里插入图片描述
    在这里插入图片描述
    退订频道:

  • unsubscribe channel1 [ channel2 ...]    指退订给定的频道。

  • punsubscribe pattern1 [pattern2 ...]   退订所有给定模式的频道。
    在这里插入图片描述

三、Redis中的事务

Redis 事务可以一次执行多个命令,(按顺序地串行化执行,执行中不会被其它命令插入,不许加塞)

事务应用场景:

  • 商品秒杀
  • 转账

两个特点:

  • Redis会将一个事务中的所有命令序列化,然后按顺序执行(任意命令执行失败,其余的命令依然被执行)
  • 执行中不会被其它命令插入,不许出现加赛行为。

一个事务从开始到执行会经历以下三个阶段:开始事务、命令入队、执行事务。

事务相关命令:
multi      标记一个事务块的开始。
exec      执行所有事务块内的命令。
discard     取消事务,放弃执行事务块内的所有命令。
watch key    监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。
unwatch     取消watch命令对所有key的监视。

四、转账功能-Redis事务演示

需求:转帐功能,A向B帐号转帐50元。

  • 转账前A有80元,B有10元。
  • 转账后A有30元,B有60元。

本例先以multi开始一个事务,然后将多个命令入队到事务中,最后由 exec命令触发事务。

  • 输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行。
  • 直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。
    在这里插入图片描述
    执行exec前,如果发现添加的命令有问题,可以使用discard命令放弃队列运行,类似于MySQL中的回滚操作。

五、转账功能升级版-watch

需求:某一账户在一事务内进行操作,在提交事务前,另一个进程对该账户进行操作。

Sentinal Redis
Sentinal Redis

监控Redis服务器健康状况、内存、性能及BullMQ队列。检查队列深度、失败任务,分析慢查询并诊断问题。

下载

上文中的转账是不安全的,在执行中如果有其他命令对账户a或者b的操作,可能会出现幻读;解决办法是添加watch命令,可以对账户进行watch监视,一旦在事务执行中,出现了其他命令对账户a或b操作,程序直接报错回滚。

在这里插入图片描述

执行了watch命令后,如果exec或discard命令先被执行,就不需要再执行unwatch来取消对key的监视了,因为exec或discard命令会自动取消监视。

六、事务的错误处理

业务逻辑错误

发生业务逻辑错误:只有报错的命令不会被执行,而其它的命令都会执行,不会回滚。
在这里插入图片描述

语法错误

发生语法错误:执行时整个的所有队列都会被取消。
在这里插入图片描述

七、Redis持久化

数据存放在内存:高效、但断电内存数据会丢失。
数据存放在硬盘:读写速度慢于内存、但断电数据不会丢失。

RDB持久化

RDB是redis的默认持久化机制。RDB相当于照快照,保存的是数据的一种状态。(几十G的数据可以保存为几KB的快照)

快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb(存在redis.conf文件中)。

优点:

  • 快照保存数据极快、还原数据极快
  • 适用于灾难备份

缺点:

  • 小内存机器不适合使用,RDB机制符合要求就会照快照,占内存。

AOF持久化

由于快照方式是在一定间隔时间做一次的,所以如果redis 意外宕机,就会丢失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用AOF(Append-Only File)持久化方式。

appendonly yes 命令可以启用 AOF 持久化方式。

有三种方式如下(默认是:每秒 fsync 一次)

  • appendfsync always     收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
  • appendfsync everysec    每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
  • appendfsync no       完全依赖OS,性能最好,但持久化没保证

优点:
AOF比快照方式有更好的持久化性,是由于在使用AOF持久化方式时:redis 会将每一个收到的写命令都通过write 函数追加到文件中(默认是appendonly.aof)。当redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

缺点:

AOF的方式也同时带来了另一个问题。持久化文件会变的越来越大,占硬盘 。例如我们调用 incr test命令 100 次,文件中必须保存全部的 100 条命令,其实有 99 条都是多余的。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

0

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

0

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

20

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

20

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

20

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

20

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn