You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何RedisJSON的JSON.GET命令比Redis原生GET命令慢3倍?

Redis.GET vs JSON.GET 性能差异的核心原因

二者性能差距主要来自存储结构、命令处理流程、内存访问效率三个核心层面:

  • 存储结构本质不同
    Redis原生字符串是连续的字节序列,存储时直接把预序列化的内容当成一块二进制数据存起来,无额外结构开销。而RedisJSON会把JSON解析成树形结构化数据(比如基于Rax树的层级节点),每个键值、嵌套对象都对应内存中的独立节点,存储时要维护节点间的关联关系。

  • 命令处理的额外开销

    • GET命令:直接从内存中读取对应字符串的字节块,几乎无计算开销,全程就是简单的内存拷贝,直接返回给客户端。
    • JSON.GET命令:需要先遍历RedisJSON的内部树形结构,定位到指定路径的节点,再把内部结构化数据重新序列化为标准JSON字符串返回。路径遍历+服务端序列化这两步会产生额外CPU消耗,是性能差距的主要来源。
  • 内存访问效率差异
    原生字符串是连续内存块,CPU缓存命中率高,读取速度极快;而RedisJSON的结构化数据是分散的内存节点,访问时需要多次指针跳转,缓存命中率低,内存访问的时间成本更高。

补充说明:你看到的3倍差距,本质是序列化/反序列化的开销转移——用GET时,反序列化工作在客户端完成;用JSON.GET时,服务端承担了将内部结构转为JSON字符串的序列化工作,所以服务端耗时更高,但客户端拿到数据后可直接使用,无需再解析。

内容的提问来源于stack exchange,提问作者Gowthamss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:01:08