美文网首页
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