设为首页 加入收藏

TOP

面试官:如何在千万级数据中查询 10W 的数据,都有什么方案?(三)
2023-07-25 21:38:15 】 浏览:59
Tags:何在千 查询 10W 都有什 方案
1 秒,而 Elasticsearch 为 349 秒。RediSearch 比 ES 快了 58%。

数据建立索引后,使用 32 个客户端对两个单词进行检索,RediSearch 的吞吐量达到 12.5K ops/sec,ES 的吞吐量为 3.1K ops/sec,RediSearch 比ES 要快 4 倍。同时,RediSearch 的延迟为 8ms,而 ES 为 10ms,RediSearch 延迟稍微低些。

对比 Redisearch Elasticsearch
搜索引擎 专用引擎 基于 Lucene 引擎
编程语言 C 语言 Java
存储方案 内存 磁盘
协议 Redis 序列化协议 HTTP
集群 企业版支持 支持
性能 简单查询高于 ES 复杂查询时高于 RediSearch

RedisJSON 性能数据

根据官网的性能测试报告,RedisJson + RedisSearch 可谓碾压其他 NoSQL

  • 对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ES 快 200 倍以上
  • 对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ES 快 500 倍以上

在混合工作负载场景中,实时更新不会影响 RedisJSON 的搜索和读取性能,而 ES 会受到影响。

  • RedisJSON 支持的操作数/秒比 MongoDB 高约 50 倍,比 ES 高 7 倍/秒。
  • RedisJSON 的延迟比 MongoDB 低约 90 倍,比 ES 低 23.7 倍。

此外,RedisJSON 的读取、写入和负载搜索延迟,在更高的百分位数中远比 ES 和 MongoDB 稳定。当增加写入比率时,RedisJSON 还能处理越来越高的整体吞吐量。而当写入比率增加时,ES 会降低它可以处理的整体吞吐量。

总结

本文从一个业务诉求触发,对「千万量级数据中查询 10W 量级的数据」介绍了不同的设计方案。对于「在 1000W 量级的底池数据中筛选 10W 的数据」的场景,不同方案的耗时如下

  1. 多线程 + CK 翻页方案,最坏耗时为 10s~18s
  2. 单线程 + ES scroll scan 深翻页方案,相比 CK 方案,并未见到明显优化
  3. ES + Hbase 组合方案,最坏耗时优化到了 3s~6s
  4. RediSearch + RedisJSON 组合方案,后续会实测该方案的耗时

参考资料:

近期热文推荐:

1.1,000+ 道 Java面试题及答案整理(2022最新版)

2.劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇jdk的安装与配置 下一篇SpringBoot 阅读源码之RandomValu..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目