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

Redis性能基准测试

基准环境

  • 机器:AWS EC2 c4.8xlarge(同机部署 Redis Server 与 ReJSONBenchmark 工具,通过网络栈连接)
  • 测试工具:ReJSONBenchmark(Go 实现、可配置并发)
  • 模式:非管线(non-pipelined)
  • 版本:RedisJSON Preview(尚未完全优化)

基线对比:PING

工具并发吞吐 (req/s)平均延迟 (ms)99% 延迟 (ms)
redis-benchmark50140,587≤1≤1
ReJSONBenchmark16116,2920.140.21

洞察:Go 测试工具在 PING 下吞吐略低于 redis-cli,但延迟依旧亚毫秒级。

JSON 操作性能

测试场景操作吞吐 (req/s)平均延迟 (ms)
空字符串(2B)JSON.SET / JSON.GET80,277 / 92,1910.20 / 0.17
小对象(380B, pass-100.json)SET 根 / GET 根41,513 / 48,3740.38 / 0.33
GET 标量路径94,8010.17
GET 子文档81,6340.19
中等数组(1.4 KB)SET 根 / GET 根16,117 / 15,1940.99 / 1.05
GET 元素 / 子字段78K–99K~0.20
大对象(3.5 KB)SET 根 / GET 根14,239 / 8,3661.12 / 1.91
超大文档(18 KB / 40 KB)SET 根 / GET 根 (18 KB)3,394 / 8914.71 / 17.92
SET 根 / GET 根 (40 KB)1,625 / 4439.84 / 36.08
数值运算NUMINCRBY / NUMMULTBY78,640 / 77,171~0.20

结论

  • 文档越小,吞吐越高、延迟越低;
  • 部分路径操作(标量、子文档)性能远超访问整个根文档;
  • 数值原子操作也能保持 >77K req/s 的高吞吐。

与 Server-Side Lua 脚本对比

  • 根级 SET/GET:RedisJSON、Lua(cjson/cmsgpack) 性能相近(80–90K req/s)。

  • 路径级 SET/GET

    • RedisJSON:直接内存访问,无需整体解码,保持 >75K req/s 且延迟稳定;
    • Lua:每次都解码整个对象,随着文档增大性能急剧下降(大文档时 <20K req/s)。

洞察:RedisJSON 原生命令在局部更新/读取场景下,解码与操作开销大幅低于基于脚本的实现。

小结

  1. 极低延迟:空字符串与小对象下,延迟普遍 <0.2 ms。
  2. 高吞吐量:简单路径查询可达 ~100K req/s;数值运算也能维持 >75K req/s。
  3. 可扩展性:文档体量增大时,根级操作延迟线性上升,但仍可满足毫秒级需求;部分路径访问保持亚毫秒稳定。
  4. 优于脚本:相比 Lua 全文解码,RedisJSON 的“就近解码”带来显著性能与资源优势。

通过本次基准,我们可以清晰看到 RedisJSON 在不同载荷与操作模式下的性能特性,为生产环境评估提供了可靠参考。

http://www.xdnf.cn/news/15012.html

相关文章:

  • mac m1芯片 安装pd及win10系统
  • 【超详细】CentOS系统Docker安装与配置一键脚本(附镜像加速配置)
  • 深入了解 Vim 编辑器:从入门到精通
  • 三、C++ 的 python 绑定 pybind11
  • 【C++基础语法】
  • 如何把Arduino IDE中ESP32程序bin文件通过乐鑫flsah_download_tool工具软件下载到ESP32中
  • 【EGSR2025】材质+扩散模型+神经网络相关论文整理随笔(三)
  • SQL 索引与日志知识点详解及练习题​
  • Agent自动化与代码智能
  • HTML应用指南:利用GET请求获取全国永辉超市门店位置信息
  • 申请注册苹果iOS企业级开发者证书需要公司拥有什么规模条件
  • Spring boot整合dubbo+zookeeper
  • 《O-PAS™标准的安全方法》白皮书:为工业自动化系统筑起安全防线
  • Spring核心原理的快速入门:快速了解IoC与DI
  • [实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
  • 【C++】红黑树的底层思想 and 大厂面试常问
  • selenium跳转到新页面时如何进行定位
  • 【K8S】Kubernetes 使用 Ingress-Nginx 基于 Cookie 实现会话保持的负载均衡
  • 【前端】接口日志追踪
  • OKR工作法
  • x86汇编语言入门基础(三)汇编指令篇3 位移运算
  • Matplotlib-绘制训练曲线指南
  • defer学习指南
  • 黑搜小知识 | DNS域名解析过程是什么样的?
  • 【Modern C++ Part8】Prefer-nullptr-to-0-and-NULL
  • 深度学习12(卷积神经网络)
  • Token 和 Embedding的关系
  • 模型内部进行特征提取时,除了“减法”之外,还有哪些技术
  • SpringCloud系列 - xxl-job 分布式任务调度 (七)
  • Using Spring for Apache Pulsar:Publishing and Consuming Partitioned Topics