当前位置: 首页 > news >正文

redis.conf

tracking-table-max-keys

tracking-table-max-keys 是 Redis 中的一个配置选项,它与 Key Tracking 功能有关。Key Tracking 是 Redis 6.0 引入的一项功能,用于追踪哪些键在被客户端操作时发生了变化。

tracking-table-max-keys 的作用:

该配置项用于限制 Redis 在执行 key tracking 时,最多可以跟踪的键的数量。如果设置的值过小,Redis 会停止跟踪新的键,并丢弃旧的键。相反,如果设置得较大,则可能会占用更多的内存。

详细解释:

  • Key Tracking 是 Redis 中用于监控键变更的一种机制,可以帮助开发者知道哪些键被修改、删除或访问。通常,key tracking 被用于一些应用场景,比如 Redis StreamsRedis Pub/Sub,或者为了对 Redis 数据库进行某种类型的变更追踪。

  • tracking-table-max-keys 控制的是最大可以追踪的键数。Redis 会为每个追踪的键分配内存,如果有太多的键被追踪,它可能会消耗过多的内存,影响性能。因此,Redis 会根据此配置项来限制最多可以追踪的键的数量。

配置项的作用:

  • 如果设置 tracking-table-max-keys 为一个较小的值,Redis 将只会追踪前 N 个键。当新的键被追踪时,Redis 会丢弃旧的键。这个参数对于内存管理非常重要,尤其是当 Redis 中的数据量很大时,设置适当的值可以避免内存过度消耗。

  • 如果设置为 0,表示 不限制追踪的键的数量,这将允许 Redis 追踪无限数量的键。

示例:

假设你在配置文件中设置了:

 

iniCopy Code

tracking-table-max-keys 10000

这表示 Redis 最多只能追踪 10,000 个键。如果有超过 10,000 个键需要被追踪,Redis 会停止追踪新的键,并丢弃最旧的那些键。

默认值:

  • 默认情况下,Redis 将 tracking-table-max-keys 设置为 10000

使用场景:

  • 高流量场景:如果你的 Redis 实例需要处理大量的键,并且启用了 key tracking,那么合理配置 tracking-table-max-keys 可以帮助你更好地管理内存使用。

  • 资源有限的环境:如果你在内存有限的环境中运行 Redis,适当地限制追踪的键数目可以避免 Redis 占用过多内存。

总结:

  • tracking-table-max-keys 用于限制 Redis 可以追踪的最大键数。
  • 通过合理配置该参数,可以在保证功能的同时,避免 Redis 使用过多内存。
  • 适用于需要 key tracking 的场景,特别是在大数据量、高并发的环境中。

redis.conf 配置文件中,Redis 提供了多个配置选项来控制过期策略的行为,特别是在如何处理过期键、如何执行定期删除、如何调整内存管理等方面。下面是与过期策略相关的一些重要配置项:

1. timeout

这个配置项指定了客户端与 Redis 服务器之间的连接超时时间。如果超时,则会关闭连接。虽然它并不直接控制过期键,但它对客户端的连接生命周期有影响。

timeout 0
  • 0:表示不设置超时时间(即无连接超时)。
  • 默认值:0

2. active-expire-effort

此配置项控制 Redis 在定期删除过期键时的“努力程度”,即 Redis 每次扫描的过期键数量。

active-expire-effort 1
  • 默认值1,表示每次扫描 1 个键。
  • 设置较高的值:增加扫描更多的键,Redis 更频繁地进行过期键的清理。
  • 适用场景:如果需要更频繁地清理过期键,可以增加这个值。

3. hz

hz 代表 Redis 事件处理的频率,控制 Redis 在后台执行任务的频率,包括定期删除过期键、清理内存等。更高的 hz 值意味着 Redis 会更频繁地检查和处理过期键。

hz 10
  • 默认值10,表示每秒 10 次事件处理。
  • 增大此值可以使 Redis 更快速地扫描过期键,但会消耗更多的 CPU 资源。

4. maxmemory-policy

此配置项决定了在 Redis 内存达到上限时,Redis 应该如何处理键的删除。虽然它不专门用于过期策略,但当 Redis 达到最大内存限制时,它会根据该策略决定删除哪些键。

maxmemory-policy noeviction
  • noeviction:当内存满时,拒绝写入操作(不删除任何键)。
  • allkeys-lru:在所有键中使用 LRU(最近最少使用)算法删除过期键或未使用的键。
  • volatile-lru:仅对设置了过期时间的键使用 LRU 策略。
  • allkeys-random:随机删除键。
  • volatile-random:随机删除设置了过期时间的键。
  • volatile-ttl:删除最接近过期的键。

5. notify-keyspace-events

此配置项控制键过期事件通知的发布。你可以启用键过期事件的通知机制,当键过期时,Redis 会通过发布/订阅的方式将事件通知给客户端。

notify-keyspace-events Ex
  • E:表示发布事件。
  • x:表示键过期事件。

notify-keyspace-events 配置项允许你订阅键空间事件(如键的过期、删除等),例如,你可以设置 Ex 来监听过期事件。

  • 常用配置
    • K:键空间事件。
    • E:键事件。
    • g:所有过期事件。
    • x:表示过期键事件。

例:notify-keyspace-events "Ex" 会通知所有过期事件。

6. maxmemory

这个配置项决定了 Redis 在内存使用达到最大值时的行为。当 Redis 达到这个内存限制时,它会根据 maxmemory-policy 配置删除一些键。这个选项和过期键的处理无关,但当内存不足时,会影响 Redis 是否会删除过期键或使用其他回收策略。

maxmemory 0
  • 0 表示不设置内存限制。
  • 如果设置了内存限制,Redis 会根据 maxmemory-policy 删除键来释放内存。

7. appendonly 和 appendfsync

这两个配置项控制 Redis 的 AOF(追加文件)持久化方式。虽然它们不直接控制过期键的删除,但它们会影响 Redis 数据的持久化过程,特别是当删除过期键时,它们会影响 AOF 文件的内容。

appendonly yes appendfsync everysec
  • appendonly:启用 AOF 持久化。
  • appendfsync:控制 AOF 文件的同步策略。everysec 表示每秒一次同步。

8. save

这个配置项决定了 Redis 执行 RDB 快照的频率。虽然它不直接与过期策略有关,但在某些情况下,过期键的删除可能会影响 RDB 文件的内容。

save 900 1
  • 表示每 900 秒(15 分钟)如果有 1 个键被修改,则进行一次 RDB 快照。

9. databases

此配置项指定 Redis 支持的数据库数量。虽然它不直接影响过期策略,但它决定了 Redis 中可以存储多少个逻辑数据库。在每个数据库中,Redis 会独立管理其键的过期时间。

databases 16
  • 默认值16

10. lua-time-limit

此配置项设置了 Redis 执行 Lua 脚本时的最大执行时间。虽然与过期策略无关,但如果在 Lua 脚本中处理过期键,这个设置会影响脚本的执行行为。

lua-time-limit 5000
  • 默认值5000 毫秒,即 5 秒。

总结:

Redis 的过期策略通过多个配置选项来控制,主要涉及如何定期删除过期键、控制内存回收策略、以及如何发布过期键事件等。关键配置项如 active-expire-efforthzmaxmemory-policynotify-keyspace-events 等,帮助用户根据应用场景优化 Redis 的内存管理和过期策略。

相关文章:

redis.conf

tracking-table-max-keys tracking-table-max-keys 是 Redis 中的一个配置选项,它与 Key Tracking 功能有关。Key Tracking 是 Redis 6.0 引入的一项功能,用于追踪哪些键在被客户端操作时发生了变化。 tracking-table-max-keys 的作用: 该配置…...

泷羽sec学习打卡-shell命令8

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell8 until循环(直到为止)case语句func函数定义实践是检验真理的唯一标准 别问&…...

割草机器人架构设计和技术应用

题目:割草机器人项目的系统架构设计与技术应用 摘要: 随着智能家居和自动化技术的发展,割草机器人作为一种便捷的园艺工具逐渐进入市场。本论文以我参与管理和开发的割草机器人项目为例,详细阐述了项目中采用的关键技术、系统架…...

基于SSM闪光点映像摄影工作室预约系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…...

Windows 和 Linux 系统命令行操作详解:从文件管理到进程监控

1.切换盘符与目录操作 在命令行中,切换盘符和目录是最常见的操作。尽管 DOS 和 Linux 在这些操作上有所不同,但它们都能实现相似的功能。 (1)切换盘符 ①DOS命令:在 DOS 中,切换盘符非常简单,使用 盘符名:&#xff…...

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录 一、Calibre-Web和Calibre的区别是什么?使用场景分别是什么?二、服务器安装docker和docker-compose三、服务器安装Calibre-Web步骤1、安装完成后的目录结构2、安装步骤3、初始配置4、启动上传 四、安装Calibre五、docker-compose常用命令六、客…...

服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例

服务器数据恢复环境&故障情况: 某品牌服务器上有一组由两块SAS硬盘组建的raid0阵列,上层是windows server操作系统ntfs文件系统。服务器上一个硬盘指示灯显示黄颜色,该指示灯对应的硬盘离线,raid不可用。 服务器数据恢复过程…...

.nii.gz文件读取方式

".nii.gz"文件的介绍: ".nii.gz"文件是一种常见的用于存储神经影像数据的格式,它通常包含了三维或四维的图像体素数据,以及与磁共振扫描相关的一些重要元数据,比如扫描参数、特征描述等等。而".nii"表示未经压…...

Kube-Prometheus-Stack安装时初始化导入自定义Grafana dashboards

获取Grafana dashboards的JSON文件 这里是获取已经编辑好的Grafana dashboards的JSON文件;以便内置到Kube-Prometheus-Stack的helm charts的安装zip文件中。 编辑自定义dashboards JSON文件 获取dashboards JSON文件模板 其实Kube-Prometheus-Stack内部本身已经内…...

【SNIP】《An Analysis of Scale Invariance in Object Detection – SNIP》

CVPR-2018 Singh B, Davis L S. An analysis of scale invariance in object detection snip[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 3578-3587. https://github.com/bharatsingh430/snip?tabreadme-ov-file 文章目录 …...

JAVA基础学习笔记_异常

文章目录 异常异常的作用处理异常的方式异常中的常见方法捕获异常自定义异常 异常 应该知道出了异常怎么处理 java.lang.Throwable Error(错误,硬件出错或内存不足,不是程序员能解决的) Exception(异常) RuntimeException(运行时异常),代码出错导致程序出现的问题 其他异…...

Modern Effective C++条款三十四:考虑lambda而非std::bind

C11中的std::bind是C98的std::bind1st和std::bind2nd的后续,C11 lambda几乎总是比std::bind更好的选择。 从C14开始,lambda的作用不仅强大,而且是完全值得使用的。与item32中一样,我们将从std::bind返回的函数对象称为bind对象(bi…...

lyapunov指数的绘制

有如下方程: %% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)绘制其对应的lyapunov指数。 MATLAB实现方式: clc; clearvars; close all;%% 方程式 % x(n1)1y(n)-a*x(n)^2 % y(n1)b*x(n)%% 代码 N 1000; a (0:0.001:1.4); b 0.3; na length(a…...

Ansible 运维工具

安装 apt install ansible /etc/ansible/hosts , 指定密码或密钥访问分组机器 [k8s_masters] master0.c0.k8s.sb[k8s_nodes] node0.c0.k8s.sb node1.c0.k8s.sb[k8s:children] k8s_masters k8s_nodes[k8s_masters:vars] ansible_ssh_usersbadmin ansible_ssh_pass"***&q…...

【AI系统】MobileNet 系列

MobileNet 系列 在本文会介绍 MobileNet 系列,重点在于其模型结构的轻量化设计,主要介绍详细的轻量化设计原则,基于这原则,MobileNetV1 是如何设计成一个小型,低延迟,低功耗的参数化模型,可以满…...

MATLAB在生态环境数据处理与分析中的应用

专题一 MATLAB编程入门 要点:介绍、案例演示、软件界面、语法基础、基本运算等 专题二(试听) MATLAB编程入门 要点:脚本编写、函数调用、循环控制、代码调试、文件读写等 专题三 MATLAB可视化与绘图 要点:交互式…...

tensorrt

engine /*tensorrt创建builder1. 创建builder2. 创建网络定义:builder-->network3. 配置参数:builder-->config4. 生成engine:builder-->engine()5. 序列化保存:engine-->serialize6. 释放资源:delete */ #include&l…...

利用Grounding DINO进行自动标注——目标检测任务——YOLO格式

关于Grounding DINO的环境搭建可以参考我的以前的博客,链接如下所示 如何在Linux上离线部署Grounding DINO-CSDN博客 这个博客主要来介绍如何利用Grounding DINO这个项目去进行目标检测的自动化标注。并且给出了相关的代码已经实验验证。 1.数据集准备 2. 开始实…...

网际协议(IP)与其三大配套协议(ARP、ICMP、IGMP)

网际协议(Internet Protocol,IP),又称互联网协议。是OSI中的网络层通信协议,用于跨网络边界分组交换。它的路由功能实现了互联互通,并从本质上建立了互联网。网际协议IP是 TCP/IP 体系中两个最主要的协议之…...

uniapp 添加loading

在uniapp中添加loading可以使用uni的API uni.showLoading 方法。以下是一个简单的示例代码 // 显示loading uni.showLoading({title: 加载中 });// 假设这里是异步操作,比如网络请求 setTimeout(function () {// 隐藏loadinguni.hideLoading(); }, 2000);...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...