美文网首页
Redis Pipeline、消息订阅、事务、扩展与回收策略

Redis Pipeline、消息订阅、事务、扩展与回收策略

作者: Robin92 | 来源:发表于2020-04-05 17:25 被阅读0次

pipeline

之前介绍过,Redis 客户端执行命令有四个过程:发送命令、命令排队、执行命令、返回结果。其中发送命令和返回结果被成为 Round Trip Time (RTT,往返时间)。

Pipeline 就是将一系列命令一次性发送到服务端,服务端处理之后一次性返回回来。

消息订阅

help

> help @pubsub

publish/subscribe

publish chan message
subscribe chan

事务

help

help @transactions

命令

  • multi/exec:事务的代码块边界
  • discard:取消
  • watch:监听变量。在开启事务之前,要保证某一个值未变化,如果变化了,事务会执行失败。Watch 相当于一个乐观锁。

Redis 在事务中不支持回滚 参考。Redis 认为一些操作的失败不是 redis 自身执行失败,而是开发过程的失败。

扩展

Redis 可添加扩展模块,--loadmodule

布隆过滤器

布隆过滤器,一个将大量数据映射成 bitmap 进行查找有无的过滤装置。它可以解决 穿透

如果没有它的话,频繁得查 MySQL 中没有的数据,不仅导致单次查询性能差,还会导致整体性能差。
详情请戳: 用Redis快速实现BloomFilter!

回收策略(内存溢出策略)

  • noeviction:无操作,内存溢出了就写入失败(eviction,逐出、收回)
  • xxx-lru:最少使用,又分为以下两种
    • allkeys-lru:移除最少使用的 Key
    • volatile-lru:移除有过期时间的 Key 中最近最少使用的。(volatile,挥发)不移除没设置过期时间的,这是一种当作持久化存储的用法
  • volatile-random:在设置过期时间的 Key 中随机淘汰。
  • volatile-ttl:在有过期时间的 Key 中按过期时间回收。

Redis 是如何淘汰过期的 Key 的

Redis 淘汰过期的 Key 有两种方式,一种是 被动方式,一种是 主动方式参考

  • 被动方式(惰性删除):当客户端访问它时,发现已经过期了,返回没找到并删除此 key
  • 主动方式(定时任务删除):Redis 服务自己(默认)每 10s 运行一次,按比例计算进行删除。
    • 随机检查 20 个 Key 删除已过期的。
    • 如果第一步中有超过 25% 的 Key 过期,再执行一次,依次循环。

常见问题

击穿、雪崩、穿透、一致性(双写)

相关文章

网友评论

      本文标题:Redis Pipeline、消息订阅、事务、扩展与回收策略

      本文链接:https://www.haomeiwen.com/subject/elmuphtx.html