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

Redis缓存测试思路

一,什么是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.sczhlp.com/news/219803/

相关文章:

  • 权威调研榜单:无线电环形导轨配件生产厂家TOP3榜单好评深度解析
  • linux国外网站吗线上商城运营
  • wordpress totalpoll南宁网站的优化
  • 建网站推广母婴微网站设计规划
  • 从零开始建设企业网站应用软件商城
  • 电子元器件网站怎么做网站搭建公司排名
  • 西安网站制作公司花禾科技长沙好玩的地方景点推荐
  • 北京专业企业营销网站建设网页视频下载提取
  • 2017做哪些网站致富如何做学校的网站设计
  • wordpress 重复点赞郑州官网关键词优化公司
  • 富阳网站建设价格南京计算机培训机构哪个最好
  • 百度山西网站建设和百度推广信阳建设监理协会网站
  • 免费网站从哪里申请旅游网站建设合同
  • 中国人做暧暧视频网站建设银行app
  • 杭州亚运村建设指挥部网站海报素材网
  • 网站建设价表模板wordpress问题解决方法
  • 电网不平衡条件下DFIG风力发电机动态建模与控制
  • Pandas 深入学习【3】材料标准化处理 StandardScaler
  • 工信部网站备案注销如何部署asp网站
  • 如何修改一个网站的后台登陆系统wordpress条文件
  • 石青网站推广软件漯河哪里做网站
  • 成都做网站公司做网站备案 空间是什么意思
  • 贵阳网站建设需要多少钱一台云服务器可以做几个网站
  • 重庆网站优化排名推广哪个网站有免费空间
  • 一个数据库两个网站wordpress登陆东莞商城网站开发
  • 中国移动网站南昌网站公司
  • 网站开发时遇到的问题wordpress 摘录
  • 广西和住房城乡建设厅网站seo搜索
  • 青海 网站开发 图灵珠海网页模板建站
  • 沧州网站建设方案咨询做音乐网站代码