文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis发布订阅演示、事务演示、持久化的方法

2024-04-02 19:55

关注

小编给大家分享一下Redis发布订阅演示、事务演示、持久化的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

文章目录


一、Redis发布订阅介绍

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

Redis发布订阅演示、事务演示、持久化的方法

应用场景:

二、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命令触发事务。

五、转账功能升级版-watch

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

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

Redis发布订阅演示、事务演示、持久化的方法

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

六、事务的错误处理

业务逻辑错误

发生业务逻辑错误:只有报错的命令不会被执行,而其它的命令都会执行,不会回滚。
Redis发布订阅演示、事务演示、持久化的方法

语法错误

发生语法错误:执行时整个的所有队列都会被取消。
Redis发布订阅演示、事务演示、持久化的方法

七、Redis持久化

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

RDB持久化

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

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

优点:

缺点:

AOF持久化

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

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

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

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

缺点:

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

以上是“Redis发布订阅演示、事务演示、持久化的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯