Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU

啤酒理论

Buffer机制,减少没必要的来回调用

前置知识

只要和redis建立了连接,发送字符串,就能交互
在这里插入图片描述

管道

在这里插入图片描述

发布 / 订阅

help @pubsub

发送者

在这里插入图片描述

订阅者

在这里插入图片描述

  PSUBSCRIBE pattern [pattern ...]
  summary: Listen for messages published to channels matching the given patterns
  since: 2.0.0

PUBLISH channel message
summary: Post a message to a channel
since: 2.0.0

PUBSUB subcommand [argument [argument ...]]
summary: Inspect the state of the Pub/Sub subsystem
since: 2.8.0

PUNSUBSCRIBE [pattern [pattern ...]]
summary: Stop listening for messages posted to channels matching the given patterns
since: 2.0.0

SUBSCRIBE channel [channel ...]
summary: Listen for messages published to the given channels
since: 2.0.0

UNSUBSCRIBE [channel [channel ...]]
summary: Stop listening for messages posted to the given channels
since: 2.0.0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
聊天室架构模型
  • 每个人能够收到实时消息
  • 上滑加载最近3天消息
  • 再上滑加载历史消息,所有消息都应该被存在数据库中

在这里插入图片描述可以启动不同的redis去接收订阅的消息,有的用来推送给用户,有的用来发给kafka,继而存储到数据库中
在这里插入图片描述

Redis事务

假设是client1绿色先开启的事务multi,client2黄色后开启的事务,
并且假设client2黄色的exec先到达,client1绿色的exec后到达:
在这里插入图片描述是先发送exec的客户端先执行命令
在这里插入图片描述

在事务中 watch 监控某个 key,如果发生改变,就不执行事务

在这里插入图片描述在这里插入图片描述

为什么 Redis 不支持回滚(roll back)

如果你有使用关系式数据库的经验, 那么 “Redis 在事务失败时不进行回滚,而是继续执行余下的命令”这种做法可能会让你觉得有点奇怪。

以下是这种做法的优点:

  • Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令用在了错误类型的键上面:这也就是说,从实用性的角度来说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中。
  • 因为不需要对回滚进行支持,所以 Redis 的内部可以保持简单且快速。

有种观点认为 Redis 处理事务的做法会产生 bug , 然而需要注意的是, 在通常情况下, 回滚并不能解决编程错误带来的问题。 举个例子, 如果你本来想通过 INCR 命令将键的值加上 1 , 却不小心加上了 2 , 又或者对错误类型的键执行了 INCR , 回滚是没有办法处理这些情况的。

RedisBloom模块 - 布隆过滤器

解决缓存穿透问题
在这里插入图片描述在这里插入图片描述在这里插入图片描述
布隆过滤器:用小空间解决大量数据匹配的问题
在这里插入图片描述三种架构情况:
在这里插入图片描述在这里插入图片描述
更新完数据库,需要同步刷缓存 -> 双写问题

缓存淘汰策略

在这里插入图片描述

下节课预习

缓存常见问题:

  • 击穿
  • 雪崩
  • 穿透
  • 一致性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值