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

Redis 测试:过期 key 内存释放情况

1 测试目的

验证 Redis key 过期后的内存释放效果。

Redis 对过期 key 的内存释放主要有两个机制:

  1. 惰性删除:访问一个 key 时检查这个 key 是否过期,如果过期则删除该 key。
  2. 定期删除:Redis 内部事件循环,当该事件循环时会检查一批 key,将过期的 key 删除。

2 测试方法

  1. 启动 Redis
  2. 使用脚本写入数据
  3. 写入完成后查看 redis-server 进程内存占用和 Redis 内部统计的内存占用信息
  4. 等待 TTL 到期,重新查看内存释放情况

使用以下脚本向 Redis 插入约 1GB 测试数据,每条 key 都带过期时间:

#!/bin/bash# 参数配置
TOTAL_KEYS=1000000      # 总 key 数
VALUE_SIZE=1024         # 每条 value 字节数(1KB)
TTL=60                  # key 过期时间,单位秒# 生成 value 字符串(全 0)
VAL=$(head -c $VALUE_SIZE /dev/zero | tr '\0' '0')# 批量写入 Redis
(
for ((i=1;i<=TOTAL_KEYS;i++)); doecho "SET key:$i $VAL EX $TTL"
done
) | redis-cli --pipe

使用以下命令分别查看 redis-server 进程内存占用和 Redis 内部统计的内存占用信息:

# 查看进程内存占用
pidof redis-server | xargs ps -o pid,comm,rss -p
# 查看 redis 内部统计的内存占用信息
redis-cli -p 6379 info memory | grep used_memory_human

3 测试结果

3.1 Redis 3.2.1

写入数据脚本执行完成后,查看内存情况:

    PID COMMAND           RSS70295 redis-server    1382500
used_memory_human:1.28G

Redis 内存占用大约在 1G。等待 30s key 过期后,再次查看内存情况:

    PID COMMAND           RSS70295 redis-server    10652
used_memory_human:801.09K

Redis 内存占用大幅度下降,说明带 TTL 的 key 过期后,内存能够成功被释放。

3.2 Redis 6.2.10

写入数据脚本执行完成后,查看内存情况:

    PID COMMAND           RSS65526 redis-server    1361984
used_memory_human:1.28G

Redis 内存占用大约在 1G。等待 30s key 过期后,再次查看内存情况:

    PID COMMAND           RSS65526 redis-server    20844
used_memory_human:854.12K

Redis 内存占用大幅度下降,说明带 TTL 的 key 过期后,内存能够成功被释放。

http://www.dtcms.com/a/358666.html

相关文章:

  • JVM架构图是怎样的?
  • 算法(④KMP)
  • SpringAI应用开发工程师高阶面试剧本与知识点全解析(含RAG、多租户、流式推理、企业落地场景)
  • Python3 lambda(匿名函数)
  • HBase高效并发锁:IdLock极简内存设计
  • Qt QML注册全局对象并调用其函数和属性
  • 银河麒麟Kylin系统编译安装Qt5.12.12
  • Yolov8损失函数:回顾Yolov8-Loss
  • ​导游|基于SprinBoot+vue的在线预约导游系统
  • DrissionPage 实战:高效爬取网页数据并保存为 CSV 的全流程解析
  • (链表)Leetcode206链表反转+Leetcode6删除链表的倒数第N个结点+虚拟头节点使用
  • Linux 笔记 Day01|课程结构
  • 第三弹、AI、LLM大模型是什么?
  • 深度学习重塑医疗:四大创新应用开启健康新纪元
  • MySQL-事务(上)
  • 【Linux】如何使用 Xshell 登录 Linux 操作系统
  • Linux 下 Docker 容器部署指南(Java + Redis 示例)
  • ⭐CVPR2025 自动驾驶半监督 LiDAR 分割新范式:HiLoTs 框架深度解析
  • 设置word引用zotero中的参考文献的格式为中文引用格式或中英文格式
  • Shell编程核心入门:参数传递、运算符与流程控制全解析
  • SEO关键词布局总踩坑?用腾讯云AI工具从核心词到长尾词一键生成(附青少年英语培训实操案例)
  • [吾爱原创] 千千每日计划
  • Java全栈工程师面试实录:从基础到微服务的全面技术解析
  • 系统架构设计师选择题精讲与解题技巧
  • Spring Boot 自动配置原理深度解析:从启动流程到监听机制
  • 学习Python中Selenium模块的基本用法(10:浏览器操作)
  • 【物联网】BLE Fundamentals 核心概念总结-广告-读写特征-LED控制-传感器通知-上下游通信过程
  • CSDN博客语法(不常用但有用)
  • 年化225%,回撤9%,夏普4.32,3积分可查看参数
  • 【光照】[光照模型]是什么?以UnityURP为例