概述

键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。如Redis数据库中键的过期事件也是通过订阅功能实现。本文主要基于Azure PaaS Redis演示相关功能的具体实现。

配置

因为开启键空间通知功能需要消耗一些 CPU , 所以在默认配置下, 该功能处于关闭状态。因为Azure Redis屏蔽了部分指令,不能直接使用cli指令设置notify-keyspace-events参数,目前可以通过Azure Portal管理门户直接设置。注意: 基本版的Redis还不支持设置该参数。

操作演示

pub/sub
  • 使用Azure Console发布消息

  • 使用Cli工具订阅消息(注意使用cli连接Azure redis需要打开6379端口)

sub expired key event
  • 设置带有过期时间的key

  • 订阅过期key事件

注意

Redis 使用以下两种方式删除过期的键:

1、当一个键被访问时,程序会对这个键进行检查,如果键已经过期,那么该键将被删除。

2、底层系统会在后台渐进地查找并删除那些过期的键,从而处理那些已经过期、但是不会被访问到的键。

当过期键被以上两个程序的任意一个发现、 并且将键从数据库中删除时, Redis 会产生一个 expired 通知。

Redis 并不保证生存时间(TTL)变为 0 的键会立即被删除: 如果程序没有访问这个过期键, 或者带有生存时间的键非常多的话, 那么在键的生存时间变为 0 , 直到键真正被删除这中间, 可能会有一段比较显著的时间间隔。


参考链接

键空间通知(keyspace notification)

redis过期通知

最新文章

  1. 深入分析Java Web技术内幕(修订版)
  2. java基础3.0:Java常用API
  3. VS2010中将当前选定项目做为启动项
  4. 在VS中使用类模板出现出现LNK2019: 无法解析的外部符号错误。
  5. java中关于时间的格式化
  6. CSS定位机制
  7. IntelliJ IDEA 12 创建Web项目 教程 超详细版
  8. cmake 学习笔记(四)
  9. SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败
  10. sqlDataAdapter的FillSchema用法
  11. java中重载一定在一个类里面吗?
  12. .NET Core单文件发布静态编译AOT CoreRT
  13. json的命名空间
  14. vue typescript ui库
  15. Ubuntu16.04彻底删除PHP7.2
  16. 绘制ROC曲线
  17. Pytorch学习笔记
  18. SQL里执行CLR c#代码
  19. MySQL高可用方案--MHA部署及故障转移
  20. swift语言混编--语言交互的接口

热门文章

  1. 【Matrix-tree定理】【BEST Theorem】hdu6064 RXD and numbers
  2. python基础之反射内置方法元类
  3. 获取asp.net mvc应用程序的根目录
  4. [转] hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询
  5. QPS相关的概念收集(吞吐量(TPS)、QPS、并发数、响应时间(RT))
  6. 将HTML元素转换成图片供用户下载(html2canvas + canvas2Image)
  7. 基于tiny4412的Linux内核移植 -- SD卡驱动移植(五)
  8. 高级进阶DB2(第2版)
  9. STSDB 一
  10. java中int取值范围是怎么计算的?