redis中通用命令以及key过期策略

通用命令

exists

判断某个key是否存在。

exists key

时间复杂度:O(1)
返回值:key 存在的个数。
在这里插入图片描述

del

删除指定的 key,可以一次删除一个或者多个。

del key

时间复杂度:O(1)
返回值:删除掉的 key 的个数。
在这里插入图片描述

expire

为指定的key删除过期时间,以秒为单位。

 EXPIRE key seconds

时间复杂度:O(1)
返回值:1 表⽰设置成功。0 表⽰设置失败。
在这里插入图片描述
时间到后,指定的key就会被删除。

pexpire 是设置毫秒级别的定时

ttl

获取指定 key 的过期时间,秒级。

ttl key

时间复杂度:O(1)
返回值:剩余过期时间。-1 表⽰没有关联过期时间,-2 表⽰ key 不存在。

在这里插入图片描述

pttl是支持毫秒级别的查询的

type

返回 key 对应的数据类型。

type key

时间复杂度:O(1)
返回值: none , string , list , set , zset , hash and stream .。

redis中key的数据类型都是string,value会存在多种数据类型。

在这里插入图片描述

定时器

在某个时间到达之后,执行指定任务。

基于优先级队列或者堆实现的

在redis过期key的场景中,依据过期时间越早,优先级就越高。现在假定有很多快要过期的key,把这些key加入到优先级队列中,按照过期时间早的先出队列,队首元素就是最早要过期的key。
此时定时器中,只需要分配一个扫描线程,去检查队首元素是否过期即可。次时只需要关注队首元素即可,扫描对首元素也不能过于频繁,可以根据当前时间与队首元素过期时间设置一个等待时间,等时间到了之后再去唤醒这个线程。
添加新任务时,可唤醒一下刚才的线程,然后重新检查队首元素,计算等待时间。

基于时间轮实现的定时器

把时间划分为很小段,划分的长度根据需求而定。每一小段都挂着一个链表,每个链表都代表一个要执行的任务。
在这里插入图片描述
指针会隔固定时间间隔去尝试执行格子上链表中的任务。

redis中并没有采取上述两种方案。

redis中的过期策略

定期删除

每次抽取一部分,检验过期时间。
redis是单线程工作,主要的任务是处理每个命令的任务,所以为保证不阻塞,每次只检查一部分保证执行足够快。

惰性删除

有些key已经到了过期时间,但key暂时还是存在,紧接着后面访问到这个key了,先执行删除key操作,同时再返回一个nil。

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

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

相关文章

数据结构·复杂度

目录 1 时间复杂度 2 大O渐进表示法 举例子(计算时间复杂度为多少) 3 空间复杂度 前言:复杂度分为时间复杂度和空间复杂度,两者是不同维度的,所以比较不会放在一起比较,但是时间复杂度和空间复杂度是用…

汉服|高校汉服租赁网站|基于Springboot的高校汉服租赁网站设计与实现(源码+数据库+文档)

高校汉服租赁网站目录 目录 基于Springboot的高校汉服租赁网站设计与实现 一、前言 二、系统设计 三、系统功能设计 1、汉服信息管理 2、汉服租赁管理 3、公告管理 4、公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选…

SQL Server错误:15404

执行维护计划失败,提示SQL Server Error 15404 无法获取有关... 异常如下图: 原因:数据库用户名与计算机名称不一致 解决办法:1.重名称数据库用户名 将前缀改成计算机名 2.重启SQL Server代理

【数据挖掘】实验1:R入门(内含详细R和RStudio安装教程)

实验1:R入门 一:实验目的与要求 1:根据上课PPT内容,掌握课堂知识并进行代码练习操作,提供练习过程和结果。 2:可COPY代码运行结果直接提交,如涉及到输出图等可截图。 二:实验内容 …

免费搭建导航网站教程带免费空间域名源码

使用免费空间和免费域名免费搭建一个导航网站 手把手视频教程 https://pan.xunlei.com/s/VNsoMehs7RCjz3IClV6h2vNMA1?pwdq596#

中国首个基于区块链的分布式算力网络上线

随着美国人工智能公司OpenAI近期发布的Sora视频模型,全球对高性能算力的需求突破了历史新高。Sora的创新在于它能够以超长生成时间、多角度镜头捕捉,理解物理世界的能力,这不仅是技术的一大突破,更是对算力需求的一大挑战。在这样…

使用npm版本管理工具解决npm 的EACCES permissions errors when installing packages globally错误

EACCES错误通常表示“权限被拒绝”,意味着您没有足够的权限来执行某个操作。在计算机领域,尤其是在文件系统和程序安装中,这个错误很常见。以下是可能导致EACCES错误的原因以及相应的解决方法: 文件系统权限:当您尝试…

【开源】SpringBoot框架开发智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

【机器学习300问】34、决策树对于数值型特征如果确定阈值?

还是用之前的猫狗二分类任务举例(这个例子出现在【机器学习300问】第33问中),我们新增一个数值型特征(体重),下表是数据集的详情。如果想了解更多决策树的知识可以看看我之前的两篇文章: 【机器…

按键+串口发送实验

摸鱼记录 Day_15 ~( ̄▽ ̄~)(~ ̄▽ ̄)~ review 前边已经学习了: 串口发送Vivado 串口通信(UART)------串口发送-CSDN博客 按键基于状态机的按键消抖实现-CSDN博客 1. …

STM32外设分类--学习笔记

简介: 本文在于根据自己的理解,将stm32f103外设按照功能分个类别,便于记忆。下面的几张图一定要熟悉,后期编写代码时能够快速找到想要的功能和对应的引脚。 我使用的工具链是:使用CubeMX完成keil5工程搭建和引脚初始化功能,然后用…

Grafana

介绍 官网:https://grafana.com/ Grafana 是一个开源的指标分析和可视化工具,它被广泛用于展示和监控云基础设施和应用程序的实时数据。Grafana 提供了一个强大且易于使用的界面,允许用户创建各种图表、图形和仪表盘,以直观地展…

探索HDFS读写流程、节点机制和数据完整性

目录 写在前面一、HDFS的读写流程1.1 HDFS写数据流程1.2 机架感知1.3 HDFS读数据流程1.4 小结 二、 NameNode和SecondaryNameNode2.1 NN和2NN工作机制2.2 Fsimage和Edits解析2.2.1 oiv查看Fsimage文件2.2.2 oev查看Edits文件 2.3 CheckPoint时间设置 三、DataNode3.1 DataNode工…

案例分析篇14:信息系统安全设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

Unity URP 如何写基础的几何着色器

这是使用几何着色器在点中心生成一个点并根据这个点把原本的面片分成三个三角形的操作。 对于几何着色器构造相对简单,网上的信息也相对较多,需要注意的点就是需要提供一个新的数据结构供几何着色器输出,因为几何着色器在顶点之后&#xff0…

哈达玛矩阵与克罗内克积

哈达玛矩阵与克罗内克积在计算机视觉中发挥着重要作用,例如哈希感知等场景下都可能用到这两个知识点。 例如: 论文:Visually meaningful image encryption scheme based on new-designed chaotic map and random scrambling diffusion strategy 中有一句: “Construct a Ha…

UVC 设备框架在 Linux 4.15 内核的演变

1. 概述 发现之前的uvc框架和现在的还是有一些差别的(比如从videobuf 过渡到videobuf2),写个blog记录一下,方便以后查询,我的内核版本:Linux 4.15 UVC(USB Video Class)设备框架是…

Leetcode 3.12

leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…

蓝鲸作业平台升级openssh执行方案分享

本文来自腾讯蓝鲸智云社区用户:AK47 蓝鲸的运维系统在我们单位使用已经快四个年头了,从刚开始的5到现在最新的7.1都有部署、测试、验证和使用。在实际的使用过程中,给我们运维提供了非常大的帮助。其中有一个场景分享给大家。这个场景是关于o…

Linux——磁盘文件

磁盘文件 通过前一篇文章Linux——系统文件I/O,我们知道了如何对加载在内存中的文件进行读写等操作,并了解了其内在的原理。同时我们也应该清楚,并不是所有的文件都会被加载入内存,而没有被加载入内存的文件,就被存放…