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

讲解Redis发布订阅演示、事务演示、持久化
最新回答
绿梦与我

2026-10-21 19:50:13

Redis发布订阅演示

Redis发布订阅(pub/sub)是一种消息通信模式,包含发送者(pub)、订阅者(sub)和频道(channel)三个核心角色。订阅频道可通过SUBSCRIBE channel1或模式匹配订阅PSUBSCRIBE news.*;发布消息使用PUBLISH channel1 "Hello";退订则用UNSUBSCRIBE channel1或PUNSUBSCRIBE news.*。例如,在实时聊天场景中,用户订阅频道后,服务端发布消息即可实现即时推送,类似微信公众号推送机制。

Redis事务演示

Redis事务通过MULTI、EXEC、DISCARD等命令实现。事务流程分为三阶段:1. 输入MULTI开启事务,后续命令入队但不执行;2. 执行EXEC按顺序执行队列命令;3. 若需取消,可用DISCARD清空队列。转账示例:A账户有80元,B有10元,事务内执行MULTI→DECRBY A 50→INCRBY B 50→EXEC,最终A剩30元,B增至60元。若发现命令错误,可在EXEC前用DISCARD回滚。

事务错误处理分为两种:业务逻辑错误(如账户余额不足)仅导致当前命令失败,其余命令仍执行;语法错误(如命令拼写错误)会使整个事务队列被取消。此外,WATCH命令可解决并发问题:若事务执行前被监视的键被其他命令修改,事务会中断。例如转账时监视A和B账户,若其他进程修改了余额,当前事务将报错回滚。执行EXEC或DISCARD后会自动取消监视,无需手动UNWATCH。

Redis持久化

Redis支持两种持久化机制:RDB(快照)和AOF(追加文件)。RDB通过定时将内存数据生成二进制快照(默认文件dump.rdb),优点是恢复速度快、适合灾难备份,但可能丢失最后一次快照后的数据,且频繁快照占用内存。AOF通过记录所有写命令(默认文件appendonly.aof)保证数据不丢失,支持三种同步策略:always(每条命令立即写入磁盘)、everysec(每秒同步一次,平衡性能与安全性)、no(由操作系统决定,性能最高但风险最大)。AOF的缺点是文件体积大,需定期执行BGREWRITEAOF压缩。实际应用中可结合两者,如RDB用于备份,AOF用于实时持久化。