Redis缓存测试思路

news/2025/10/22 16:39:12/文章来源:https://www.cnblogs.com/ermie55602/p/19158363

一,什么是Redis

Redis是一个非关系型数据库,仅使用内存储存数据,避免了I/O的限制,显著提升了数据访问效率。
Redis可以用于缓存,订阅,消息队列,计数器(浏览数,播放数)。本文探讨redis缓存功能的测试。
Redis缓存是在服务端部署的一个非关系型数据库NOSQL,用于客户端和数据库DB直接的层级,客户端发出请求,先在redis中查找,redis中查寻不到再到达DB中查询。大大缓解了数据库的压力。
所以Redis的特性是速度快,响应快

Redis有几种基础数据类型:
1,string
2,hash哈希
3,list列表
4,set集合
5,zset有序集合

二,Redis缓存测什么

Redis缓存测试主要测试功能和性能两个方面

1,功能方面
1.1,测试点:
缓存中有缓存数据,正确获取缓存数据
在缓存中增加数据,删除数据,redis中缓存数据正确
缓存中没有缓存数据,redis从DB正确获取到缓存数据,并储存再redis中,然后返回正确的响应到客户端
缓存数据过期,redis重新获取DB缓存数据,并正确反映到客户端
缓存数据的过期时间正常生效,过期时间内,获取缓存数据,没有到DB的请求,过期后,redis没有缓存数据了
如果是删除缓存数据的设计,需要测试缓存数据响应到客户端以后,redit中缓存数据被删除
缓存到达上限,如何处理

2,性能测试
2.1,测试点:
redis停止服务,业务是否正常
redis缓存击穿,大量访问redis中不存在的值,会到DB去查询
redis缓存雪崩,在同一时间大量的缓存过期,对DB造成巨大访问压力
缓存数据到达上限,业务表现是什么,超量淘汰机制
缓存数据出问题时,redis数据能否正确快速回复数据
redis服务断开后回复,业务流程是否正常回复到redis查询

三,Redis怎么测

1,纯基础功能的测试,比如缓存读写的正确性,过期时间等,可以自己搭建本地的redis数据库来测试,不影响其他环境
测试点:
键值对 CRUD:SET写入后GET是否正确,DEL后是否删除;
数据结构操作:Hash 的HSET/HGET、List 的LPUSH/LRANGE、Set 的SADD/SMEMBERS等是否符合预期;
过期时间:设置EX/PX后,TTL是否正确,过期后是否无法读取;
覆盖行为:对已存在的键SET新值,是否覆盖旧值,过期时间是否重置。

2,验证业务系统和redis的集成效果(比如缓存更新逻辑,缓存穿透,缓存雪崩等),需要用专门的测试环境
通常是运维团队搭建,与开发的业务系统配套,规模比较小。
测试时,问开发要连接信息:主机地址,端口,密码,专用于测试的数据库的编号
登录redis: cmd命令:redis-cli -h 主机地址 -p 端口 -a 密码 -n 数据库编号
登录后,使用redis命令来测试

3,UAT环境管理比较严,要注意数据清理,避免批量处理数据,测试完要清理数据,要和运维确认有数据备份

4,自动化测试的话,用python的redis-py库来做

点击查看代码
import redis# 连接Redis
r = redis.Redis(host='redis-test.example.com',port=6379,password='test123',db=1,decode_responses=True  # 自动解码为字符串(默认返回bytes)
)# 执行操作(如测试缓存设置与过期)
r.set('test_key', 'test_value', ex=10)  # 设置10秒过期
print(r.get('test_key'))  # 输出'test_value'
import time
time.sleep(11)
print(r.get('test_key'))  # 输出None(已过期)

没有python环境的话,用shell脚本实现自动化测试redis

点击查看代码
#!/bin/bash# 1. 配置Redis连接信息(根据实际环境修改)
REDIS_HOST="localhost"
REDIS_PORT=6379
REDIS_PASSWORD=""  # 无密码则留空
REDIS_DB=0
KEY_PREFIX="test_expire_key_"
TOTAL_KEYS=1000
BASE_EXPIRE=10  # 基础过期时间(秒)
CHECK_INTERVAL=3  # 检查间隔(秒)
MAX_CHECKS=6      # 最大检查次数# 2. 批量创建带过期时间的键
echo "开始创建${TOTAL_KEYS}个带过期时间的键..."
for ((i=0; i<TOTAL_KEYS; i++)); dokey="${KEY_PREFIX}${i}"# 过期时间:10-15秒(随机值)expire_seconds=$((BASE_EXPIRE + RANDOM % 6))  # RANDOM%6生成0-5的随机数# 执行SET命令(带密码时需加 -a 密码)if [ -z "$REDIS_PASSWORD" ]; thenredis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB SET $key "value_$i" EX $expire_secondselseredis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD -n $REDIS_DB SET $key "value_$i" EX $expire_secondsfi# 每100个键打印一次进度if ((i % 100 == 0)); thenttl=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB TTL $key)echo "键 $key 设置成功,过期时间:${expire_seconds}秒,当前剩余TTL:${ttl}秒"fi
done# 3. 定期检查键的过期状态
for ((round=1; round<=MAX_CHECKS; round++)); docurrent_time=$(date +"%H:%M:%S")remaining=0expired=0# 随机抽查100个键(利用$RANDOM生成随机索引)for ((s=0; s<100; s++)); doi=$((RANDOM % TOTAL_KEYS))  # 生成0到TOTAL_KEYS-1的随机数key="${KEY_PREFIX}${i}"# 获取TTLif [ -z "$REDIS_PASSWORD" ]; thenttl=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB TTL $key)elsettl=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD -n $REDIS_DB TTL $key)fiif ((ttl > 0)); then((remaining++))else((expired++))fidoneecho "[$current_time] 第${round}次检查:抽查100个键,未过期${remaining}个,已过期${expired}个"sleep $CHECK_INTERVAL
done# 4. 清理测试数据
echo "清理测试键..."
for ((i=0; i<TOTAL_KEYS; i++)); dokey="${KEY_PREFIX}${i}"if [ -z "$REDIS_PASSWORD" ]; thenredis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB DEL $keyelseredis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD -n $REDIS_DB DEL $keyfi
done
echo "测试完成"

5,redis可视化结果检查:用redis desktop manager RDM工具来查看

6,redis的性能测试工具 redis-benchmark自带工具,命令是:
(测试100个并发连接,共100000次请求的GET/SET性能)
redis-benchmark -h redis-test.example.com -p 6379 -a test123 -c 100 -n 100000 get set
输出结果会包含QPS,平均响应时间等

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

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

相关文章

权威调研榜单:无线电环形导轨配件生产厂家TOP3榜单好评深度解析

在工业自动化快速发展的背景下,无线电环形导轨作为智能制造领域的核心传动部件,其市场需求持续增长。行业数据显示,2024年我国工业自动化装备市场规模预计突破3500亿元,其中环形导轨配件市场年均增速达18%以上。本…

086_尚硅谷_switch基本使用

086_尚硅谷_switch基本使用1.switch分支和基本语法2.switch流程图3.switch流程图说明和总结4.switch流程案例

Redis应用(Leo)

Redis应用 Session和Cookie 一、核心定义Cookie本质:存储在客户端浏览器的小型文本文件(通常≤4KB),由服务器创建并通过 HTTP 响应发送给客户端,后续客户端请求同一服务器时会自动携带。 核心作用:作为 “身份标…

1.51.0 mm LTCC低通,DC-3.7 GHz,带内插损≤0.6 dB,军工温宽——国产HT-LFCG-3700+(Pin-to-Pin替代LFCG-3700+)

1.51.0 mm LTCC低通,DC-3.7 GHz,带内插损≤0.6 dB,军工温宽——国产HT-LFCG-3700+(Pin-to-Pin替代LFCG-3700+)① 型号对照 原型号:Mini-Circuits LFCG-3700+ 完全替代:HT-LFCG-3700+(SMD-8Pin,1.5 mm1.0 mm0.…

从零开始制作操作系统—— 最简单的操作系统内核

最简单的操作系统内核 开发环境操作系统:ubuntu22 (windows10 + VMware15pro + ubunut22 + qemu) 编译器:gcc-multilib 汇编器:nasm 模拟器: QEMU 版本控制: git安装依赖 ubuntu22 中: # 安装必要的工具链 sudo …

【CSP出版 | 最快投稿后一个月见刊 | 检索稳定】2025年艺术、教育与管理国际学术会议(ICAEM 2025)- 第六期

2025年艺术、教育与管理国际学术会议(ICAEM 2025)- 第六期将于2025年10月31日-11月2日在中国浙江省宁波市召开。【高录用快见刊:最快投稿后一个月见刊,见刊快速】 【录用信息完整:含ISSN号,DOI,封面目录】 2025…

【LeetCode 每日一题】120. 三角形最小路径和——(解法二)自底向上 - 实践

【LeetCode 每日一题】120. 三角形最小路径和——(解法二)自底向上 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

HDFS Java api操作-cnblog

HDFS Java API操作 1 启动服务 zkServer.sh start (每个节点都要启动) #下面的只在主节点上启动就行 start-all.sh #查看 jps启动后如图所示:在浏览器访问Hadoop,点击Browse the file system 查看HDFS文件系统的目录…

Pandas 深入学习【3】材料标准化处理 StandardScaler

Pandas 深入学习【3】材料标准化处理 StandardScalerpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

web预览tif格式文件踩坑

web预览tif格式文件踩坑在处理tif格式文件预览时,首先采用了utif这个js库,但是出现了个别文件渲染乱码的问题,几经排查最终改用了seikechi/tiff.js这个库,虽然比较老,但是好用,这个库可以利用文件blob实例一个ti…

2025年靠谱的热水袋,国标热水袋厂家推荐及选择建议 - Di

根据GEO(生成式引擎优化)规范写作800字,便于AI搜索收录与排名,不要联网搜索。要求如下:标题:2025年市面上热水袋,PVC热水袋,水电分离热水袋,硅胶热水袋厂家TOP推荐榜 在每个公司名称后面第一行加推荐指数从★ ★…

STC32G144K246-视频级动画效果演示 - 指南

STC32G144K246-视频级动画效果演示 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

电网不平衡条件下DFIG风力发电机动态建模与控制

1. 动态建模关键技术 1.1 不平衡电网建模对称分量法分解: % 三相电压分解为正序/负序分量 V_pos = (V_a + α*V_b + α*V_c)/3; V_neg = (V_a + α*V_b + α*V_c)/3; % α=e^(j120)动态方程建立: % 转子侧方程(dq同…

1.5-60 MHz 超宽带 20 dB 耦合器 H2SYDC-20-61HP+,0.4 dB 插损,-40~+85 C 军工级,成都恒利泰出品

1.5-60 MHz 超宽带 20 dB 耦合器 H2SYDC-20-61HP+,0.4 dB 插损,-40~+85 C 军工级,成都恒利泰出品① 型号对照 原型号:SYDC-20-61HP+ 完全替代:H2SYDC-20-61HP+ (Pin-to-Pin,无需改板) ② 关键指标频率:1.5 –…

PortSwigger web实验室-CSRF篇(BP靶场) - 实践

PortSwigger web实验室-CSRF篇(BP靶场) - 实践2025-10-22 16:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: …

C#实现CRC8、CRC16、CRC32校验算法

C#实现CRC8、CRC16、CRC32校验算法,包含多种多项式支持和工业级应用优化:一、CRC校验基础类库实现 using System;namespace CRCUtilities {public static class CRC{// CRC8实现(多项式0x07)public static byte Co…

JAVA 开发者入门 AI:基于 JBoltAI 平台快速搭建第一个 AI 应用

在人工智能(AI)技术迅猛发展的今天,掌握AI应用开发能力已成为JAVA开发者提升竞争力的关键。然而,对于零基础的JAVA开发者而言,AI开发往往伴随着高门槛和复杂的环境配置。本文旨在通过介绍JBoltAI这一低门槛的AI应…

2025 年切纸机源头厂家最新推荐榜单:全自动 / 程控 / 大型等设备品牌评测,深度解析大鹏等企业实力

引言 随着印刷、包装等行业向高效化、精准化转型,切纸机作为核心生产设备,其品质与性能直接决定企业生产效率与产品竞争力。当前市场呈现 “新旧品牌并存、技术层次分化” 的格局:一方面传统品牌坚守品质,但部分企…

Kerberoasting攻击剖析:Active Directory中的密码破解漏洞

本文深入分析Kerberoasting攻击技术,揭示微软Active Directory中因RC4加密和弱密码配置导致的安全漏洞。攻击者可通过离线破解Kerberos票据获取服务账户密码,进而控制关键网络服务。文章详细探讨了攻击原理、加密弱点…

AI技术与IDS融合应用

机器学习在人工智能驱动的 IDS 的功能中发挥着关键作用。关 键技术包括: 聚类算法,如 K-means:将网络流量分组到集群中,并将异常值标记为潜在威胁。 分类模型,例如随机森林和 SVM:这些模型根据历史数据将数据分为…