开发者社区> 问答> 正文

JSON 与 JSONB 序列化性能哪个好

JSON 与 JSONB 序列化性能哪个好

public static void main( String[] args )
  {
    String text = "qwerty";
    byte[] toJSONBytes = JSON.toJSONBytes( text );
    byte[] toBytes = JSONB.toBytes( text );
    System.err.println( toJSONBytes.length );
    System.err.println( toBytes.length );
  }

我现在的项目里面使用 RedisTemplate 做redis客户端,使用 fastjson 做 Redis 序列化 。

在保存值的时候都要 转成 byte[]

请问这两种方式哪个性能更好呢?

原提问者GitHub用户ioplmk

展开
收起
后端老大 2023-04-21 11:16:43 244 0
3 条回答
写回答
取消 提交回答
  • 当然是JSONB性能更好

    原回答者GitHub用户wenshao

    2023-04-21 14:14:03
    赞同 展开评论 打赏
  • 效率的差别:json类型存储快,使用慢,jsonb类型存储稍慢,使用较快。

    2023-04-21 14:01:23
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    有两个JSON数据类型:json和jsonb。它们接受几乎 相同的值组作为输入。它们实际的主要差别是效率。json 数据类型存储输入文本的精确拷贝,处理函数必须在每个执行上重新解析;而jsonb数据以分解的二进制格式存储,这使得它由于添加了转换机制而在输入上稍微慢些,但是在处理上明显更快,因为不需要重新解析。jsonb也支持索引,这也是一个明显的优势。

    因为json类型存储输入文本的精确拷贝,它将保存令牌间语义上无关紧要的空格,和JSON对象中键的顺序。另外,如果值中的一个JSON对象多次包含相同的键,那么保存所有的键/值对。(处理函数将最后一个值当做操作值。)相比之下, jsonb不保存空格,也不保存对象键的顺序,并且不保存重复对象键。如果在输入中指定了重复的键,那么只保存最后一个值。 总体来说 jsonb 写入比 json 稍慢, 但检索较 json 快些,官方做过测试比较的,用的时候,根据业务来确定。

    2023-04-21 14:01:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载