redis夯实之路-键过期与发布订阅详解

news2024/9/29 15:26:34

设置键的生存时间或过期时间

Setex(单位s),expire(s),pexpire(ms)可以设置键的生存时间,

Expirate,pexpirate设置键的过期时间(timestamp的时间戳)

Ttl和pttl返回键的剩余生存时间

RedisDb结构的expires字典保存了数据库的所有键的过期时间,称为过期字典。键是指向键对象的指针,值是longlong类型的整数,一个ms精度的unix时间戳

Persist可以移除键的过期时间

判断过期键

如果过期字典存在键,unix时间戳大于过期时间,键已经过期

过期键删除策略:定时删除,惰性删除,定期删除

1.定时删除:使用定时器,过期时间来临时进行删除。

2.惰性删除:获取键时检测是否过期,过期则删除。

3.定期删除:每隔一段时间随机抽取一些设置了过期时间的键,检测键是否过期,清理过期键。

Redis使用的是惰性删除,定期删除两种策略:获取键时检查是否过期,周期性检查。

Redis在键的过期时间到达之后并不会立即清除,过期键可能仍然存在一段时间,直到Redis检查到过期执行删除操作。如果需要确保即时删除过期键,可以使用DEL命令主动删除过期键。


也可以通过配置参数 maxmemory来限制Redis使用的内存大小,当内存达到限制时,Redis会根据所采用的内存淘汰策略来淘汰一些数据以释放内存空间。

发布与订阅

客户端使用subscribe订阅频道或模式

订阅关系保存在服务器状态的pubsub_channels字典里,字典的键为被订阅的频道,值为客服端的链表

订阅频道

使用subscribe订阅频道,服务器会将客服端和被订阅的频道在pubsub_channels字典中关联。如果频道没有任何订阅者,需要在pubsub_channels字典中新建一个该频道的键。客服端(订阅者)会被添加到值的链表的末尾。

退订频道

使用unsubscribe退订频道,在pubsub_channels字典中会在链表中删除退订的客户端。如果频道没有任何订阅者,需要删除该频道。

发送消息

使用publish向频道发送消息时,会将消息发送给频道的所有订阅者,然后将消息发送给所有和频道相匹配的模式的订阅者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1379075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Surface mesh结构学习

CGAL 5.6 - Surface Mesh: User Manual Surface_mesh 类是半边数据结构的实现,可用来表示多面体表面。它是半边数据结构(Halfedge Data Structures)和三维多面体表面(3D Polyhedral Surface)这两个 CGAL 软件包的替代品…

竞赛保研 基于深度学的图像修复 图像补全

1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学的图像修复 图像补全 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-se…

【二十】【动态规划】879. 盈利计划、377. 组合总和 Ⅳ、96. 不同的二叉搜索树 ,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

Gauss消去法(C++)

文章目录 算法描述顺序Gauss消去法列选主元Gauss消去法全选主元Gauss消去法Gauss-Jordan消去法 算法实现顺序Gauss消去法列选主元Gauss消去法全选主元Gauss消去法列选主元Gauss-Jordan消去法 实例分析 Gauss消去法是求解线性方程组较为有效的方法, 它主要包括两个操作, 即消元和…

TypeScript学习笔记、鸿蒙开发学习笔记

变量定义方式 # 变量声明 let msg: string douzi console.log(msg) let num: number 20 console.log(num) let end: boolean true console.log("end" end) let a: any 10 a douzi console.log(a) let p {name:"douzi",age:20} console.log(p.name)…

30天精通Nodejs--第十七天:express-路由配置

目录 引言基础路由配置路由参数与查询参数路由前缀与子路由路由重定向结语 引言 上篇文章我们简单介绍了express的基础用法,包括express的安装、创建路由及项目启动,对express有了一个基础的了解,这篇开始我们将详细介绍express的一些高级用…

docker安装nacos+mysql+配置网络

一、配置网络 为什么要配置网络?因为 Nacos 内要连接MySQL数据库的,我的 MySQL 数据库也是用 Docker启动的,所以2个容器间要通信是需要配置他们使用相同的网络。这个操作要在启动Nacos容器之前。 注意:这里配置的网络只在镜像内部…

聚对苯二甲酸乙二醇酯PET的特性有哪些?UV胶水能够粘接聚对苯二甲酸乙二醇酯PET吗?又有哪些优势呢?

聚对苯二甲酸乙二醇酯(Polyethylene Terephthalate,PET)是一种常见的塑料材料,具有许多特性,包括: 1.化学式: PET的化学式为 (C10H8O4)n,其中n表示重复单元的数量。 2.透明度&#…

掌握 gRPC 和 RPC 的关键区别

一、远程过程调用协议简介 1、RPC 的本质 首先,我们探讨一下什么是 RPC。RPC,缩写为 Remote Procedure Call Protocol,直译来看就是远程过程调用协议。 讲得通俗一些: RPC 是一种通信机制RPC 实现了客户端/服务器通信模型 官…

【大厂秘籍】 - Redis持久化篇

创作不易,你的关注分享就是博主更新的最大动力, 每周持续更新 微信搜索【 企鹅君】关注还能领取学习资料喔,第一时间阅读(比博客早两到三篇) 求关注❤️ 求点赞❤️ 求分享❤️ 对博主真的非常重要 企鹅君原创|GitHub开源项目gith…

【算法】信使(最短路问题)

题目 战争时期,前线有 n 个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。 信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位)。 指挥部设在第一个哨所。 当指挥部下达一个命令…

<软考高项备考>《论文专题 - 63 质量管理(2) 》

2 过程1-规划质量管理 2.1 问题 4W1H过程做什么识别项目及其可交付成果的质量要求、标准,并书面描述项目将如何证明符合质量要求、标准的过程;作用:为在整个项目期间如何管理和核实质量提供指南和方向为什么做1、识别项目/产品质量要求和标…

debian 11 arm64 aarch64 D2000 平台编译 box86 box64 笔记

参考资料 https://github.com/ptitSeb/box86/blob/master/docs/COMPILE.md 源码地址 GitHub - ptitSeb/box86: Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices deb在线源地址(打不开): Itais box86…

两个阅读英文论文的免费AI工具

大家好啊,我是董董灿。 本文会介绍我平时用到的两个免费的基于GPT的论文阅读平台,很好用,对于有英文阅读困难症的小伙伴(比如我)是真的提效。 1、 英文阅读困难症 在我的工作以及业余学习中,会时不时的需要翻看一些英文论文&…

GitLab任意用户密码重置漏洞(CVE-2023-7028)

GitLab CVE-2023-7028 POC user[email][]validemail.com&user[email][]attackeremail.com 本文链接: https://www.黑客.wang/wen/47.html

JavaScript保留字和预定义的全局变量及函数汇总

保留字也称关键字,每种语言中都有该语言本身规定的一些关键字,这些关键字都是该语言的语法实现基础,JavaScript中规定了一些标识符作为现行版本的关键字或者将来版本中可能会用到的关键字,所以当我们定义标识符时就不能使用这些关…

【Git】本地仓库文件的创建、修改和删除

目录 一、基本信息设置 1、设置用户名2、设置用户名邮箱 二、Git仓库操作介绍 1、创建一个新的文件夹2、在文件内初始化git仓库(创建git仓库)3、向仓库中添加文件 1.创建一个文件2.将文件添加到暂存区3.将暂存区添加到仓库 4、修改仓库文件 1.修改文件2.…

汽车级线性电压稳压器LM317MBSTT3G:新能源汽车的理想之选

LM317MBSTT3G是一款可调三端子正向线性稳压器,能够在 1.2 V 至 37 V 的输出电压范围内提供 500 mA 以上的电流。此线性电压稳压器使用非常简便,仅需两个外部电阻即可设置输出电压。另外,它采用内部电流限制、高温关断和安全区域补偿&#xff…

边缘计算:连接实时数据的力量与未来发展之路

边缘计算是一种分布式计算范式,它旨在将数据处理、存储和应用服务带到数据源的近端,即网络的“边缘”。在边缘计算模型中,算力和存储资源距离末端用户或数据源更近,这减少了数据在网络中传输的距离,从而降低延迟&#…

【Web】token机制

🍎个人博客:个人主页 🏆个人专栏:Web ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 机制基本: 优势: 结语 我的其他博客 前言 在当今互联网时代,安全、高效的用户身份验证和资源授…