导读跟大家讲解下有关讲解Redis发布订阅演示、事务演示、持久化,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说讲解Redis发
跟大家讲解下有关讲解Redis发布订阅演示、事务演示、持久化,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说讲解Redis发布订阅演示、事务演示、持久化,小编也收集到了有关讲解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
标记一个事务块的开始。eroxxec
执行所有事务块内的命令。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
需求:某一账户在一事务内进行操作在提交事务前另一个进程对该账户进行操作。
上文中的转账是不安全的在执行中如果有其他命令对账户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 everyc
每秒钟写入磁盘一次在性能和持久化方面做了很好的折中appendfsync no
完全依赖OS性能最好但持久化没保证
优点: AOF比快照方式有更好的持久化性是由于在使用AOF持久化方式时:redis 会将每一个收到的写命令都通过write 函数追加到文件中(默认是appendonly.aof)。当redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
缺点:
AOF的方式也同时带来了另一个问题。持久化文件会变的越来越大占硬盘 。例如我们调用 incr test命令 100 次文件中必须保存全部的 100 条命令其实有 99 条都是多余的。
以上就是讲解Redis发布订阅演示、事务演示、持久化的详细内容!
来源:php中文网
本文发布于:2023-02-26 21:07:46,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/167741686657574.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:互联网常识:讲解Redis发布订阅演示、事务演示、持久化.doc
本文 PDF 下载地址:互联网常识:讲解Redis发布订阅演示、事务演示、持久化.pdf
留言与评论(共有 0 条评论) |