redisDb底层结构

redis数据库

redis在初始化服务器时,会根据服务器状态的dbnum属性来决定创建多少个数据库,dbnum属性的值由服务器配置的database选项决定,默认情况下为16,redisServer结构如下:

struct redisServer {// ...//一个数组,保存着服务器中的所有数据库redisDb *db;int dbnum// ...
};

可以通过select命令选择切换到哪个数据库执行CRUD操作

redisDb

typedef struct redisDb {// ...//数据库键空间,保存着数据库中的所有键值对dict *dict;dict *expires// ...
} redisDb;

redisDb主要包含了dict 和 expires两个字典,dict字典用于存储键值对,expires字典用于存储设置了过期时间的key和其过期时间

过期删除策略

针对于redis过期删除问题,主要有三种策略:
(1)定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时来临时,立即执行键的删除操作。
这种方法会让redis给所有设置了过期时间的key都创建一个定时器,对CPU资源耗费极大
(2)惰性删除:放任键过期不管,每次获取键时,都检查下键是否过期,如果过期,删除该键
使用惰性删除时,如果数据库中有非常多的过期键,而这些过期键又恰好没有被访问到的话,那么它们永远不会删除,无用的垃圾数据占用了大量的内存,而服务器不会去自己释放他们
(3)定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键

redis的过期删除策略

redis服务器实际使用的是惰性删除和定期删除两种策略

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

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

相关文章

初探科研 | 第一次科研经历

1 . 自己的experiences 自己大二下学期中比较幸运加入到科研组里,做的方向是3D人体姿态估计,不过由于是一个全新领域,基本也是自己这个小白探索,所以成果甚微。在八月初由于各种原因退出了组,但是在这期间收获还是蛮多…

全网最全ArrayList底层原理实现

1. ArrayList集合底层数据结构 1. ArrayList集合介绍 ArrayList是实现了List接口的动态数组,所谓动态数组就是他的大小是可变的。实现了所有可选列表操作,并允许包括Null在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部…

如何将应用程序发布到 App Store

憧憬blog主页 在强者的眼中,没有最好,只有更好。我们是移动开发领域的优质创作者,同时也是阿里云专家博主。 ✨ 关注我们的主页,探索iOS开发的无限可能! 🔥我们与您分享最新的技术洞察和实战经验&#xff0…

伦敦金短线好还是长线好

在伦敦金投之中,长期有一个争论很久的问题,那就是伦敦金投资究竟是长线好还是短线好?不同的投资者对这个问题有不同的看法,一般认为,伦敦金投资比较适合短线交易。笔者也将讨论这个问题,看看伦敦金投资是不…

【官方中文文档】Mybatis-Spring #使用 SqlSession

使用 SqlSession 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。 一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或回滚连接,最后,当不再需要它的时候,你可以关闭 s…

MinIO线上扩容实战

硬件投入肯定是随着业务的增长而增长,这就要求中间件平台必须提供水平伸缩机制,MinIO对象存储服务也不例外,本文就详细介绍MinIO的扩容。 Minio支持通过增加新的Server Pool来扩容老的集群。每个Server Pool都是一个相对独立的故障域&#x…

​深度解析温湿度监控系统环境对档案存储库房的影响

深度解析温湿度监控系统环境对档案存储库房的影响 (一)高温高湿环境对档案材料的影响 1、库房高温高湿会使一些档案纸张材料中耐热性较差的字迹产生油渗扩散褪变等现象而导致字迹模糊不清,会加速纸张中残留的有害化学物质对纤维素的破坏潮湿…

PostgreSQL Error: sorry, too many clients already

Error PG的默认最大连接数是100. 如果超过100就会报错sorry, too many clients already Find show max_connections; SELECT COUNT(*) from pg_stat_activity; SELECT * FROM pg_stat_activity;Solution 提高最大连接数 ALTER SYSTEM SET max_connections 然后重启pg查看…

【C++ 学习 ⑭】- 详解 stack、queue 和 priority_queue 容器适配器

目录 一、详解 C STL 容器适配器 1.1 - 什么是容器适配器? 1.2 - 容器适配器的种类 二、详解 C STL deque 容器 2.1 - deque 的原理介绍 2.2 - deque 的优缺点 三、详解 stack 容器适配器 3.1 - stack 的基本介绍 3.2 - stack 的成员函数 3.3 - stack 的模…

androidstudio Please specify a signing configuration for this variant (release)

当直接运行release版本时,报错Error: The apk for your currently selected variant cannot be signed. Please specify a signing configuration for this variant (package64-release). 解决报错:添加签名,signingConfigs 写在buildTypes前…

java八股文面试[java基础]——final 关键字作用

为什么局部内部类和匿名内部类只能访问final变量: 知识来源 【基础】final_哔哩哔哩_bilibili

壁仞科技与百度飞桨完成II级兼容性测试

近日,壁仞科技BR104通用GPU与百度飞桨已完成II级兼容性测试。测试结果显示,双方兼容性表现良好,整体运行稳定。这是壁仞科技加入飞桨“硬件生态共创计划”后的阶段性成果。产品兼容性证明本次II级兼容性测试完成了涵盖自然语言处理、计算机视…

服务器的介绍

1.服务器概述 1.1 服务器的基本概念 服务器是计算机的一种,是网络中为客户端计算机提供各种服务的高性能计算机; 服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、 打印机及昂贵的专用通讯设备提供给网络上的客户站点共享&#xf…

【Unity3D赛车游戏】【二】如何制作一个真实模拟的汽车

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

C# 学习笔记

C# 学习笔记 Chapter 1 C# 基础部分Section 1 类与命名空间Part 1 命名空间 NameSpacePart 2 类 Class Section 2 基本元素Section 3 数据类型Part 1 什么是类型?Part 2 类型在 C Sharp 中的作用Part 3 C Sharp 中的数据类型 Section 4 变量、对象与内存Part 1 变量…

k8s扩缩容与滚动更新

使用kubectl run创建应用 kubectl run kubernetes-bootcamp \> --imagedocker.io/jocatalin/kubernetes-bootcamp:v1 \> --port8080 端口暴露出去 kubectl expose pod kubernetes-bootcamp --type"NodePort" --port 8080 使用kubectl create创建应用 kubect…

stack和queue的模拟实现

stack和queue的模拟实现 容器适配器什么是适配器STL标准库中stack和queue的底层结构deque的简单介绍deque的缺陷 stack模拟实现queue模拟实现priority_queuepriority_queue的使用priority_queue的模拟实现 容器适配器 什么是适配器 适配器是一种设计模式(设计模式是一套被反复…

C++复习笔记--完美转发、std::move和std::forward的使用

目录 1--完美转发 1-1--实例代码分析 2--std::forward的使用 2-1--std::forward的源码 2-2--std::forward大白话总结 3--std::move的使用 3-1--std::move的源码 3-2--std::move大白话总结 1--完美转发 为什么需要完美转发? C Primer 关于转发 (P612) 有这么…

【C++】红黑树

目录 一、红黑树的概念二、红黑树的性质三、红黑树的插入操作四、红黑树的验证五、红黑树和AVL树的比较六、代码 一、红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从…

winform通过消息机制触发事件

在 WinForms 应用程序中,你可以通过使用消息机制来触发自定义事件。这可以通过 WndProc 方法来实现,该方法用于处理窗口消息。以下是一个简单的示例,演示如何通过消息机制在 WinForms 中触发自定义事件:首先,创建一个自…