qq_32848715 2016-04-12 03:27 采纳率: 0%
浏览 2024

如何缓存大量机票的数据,优化航班的查询

先说说应用的场景,要做一套机票查询和预定以及支付的系统。
连接第三方机票数据接口,
但是对方只提供了一种查询机票的方式:通过出发地和目的地,还有日期,
可以返回那天所有航班的信息 包括航班号,起飞和到达的时间,以及每种舱位(经济舱,头等舱等等n种舱位)的价格和折扣信息等等。
例如请求上海到北京在2016年7月1日的航班 会返回大概好多航班和各个舱位对应的价格。
数据结构比较复杂,大概三四层的json,一天的单程航班信息,整体的数据量大概在250KB,非常巨大。
对方接口访问速度非常慢 第一次需要20s左右,对方应该也做了缓存,之后大概半小时内,访问速度有5s左右,也十分的慢

为了提高我们机票系统的访问效率,需要做一套缓存系统,
要缓存这些数据,目标是缓存30天 1000个航班的数据,数据量大概要6个G。
还要考虑刷新机票数据的时间间隔,既不能间隔太长(数据时效性要求较高),又不能间隔太短(担心写入速度不够快,而且对方接口是付费的)
开始考虑使用mysql 但是刷新一次数据速度极慢,但是优点是数据结构比较容易处理,便于各种查询。
求解,还有什么别的好办法,既能相对快速的从外部接口拉下来数据进行数据读写,又便于各种查询(查询维度比较多,除了基本的出发城市到达城市和日期之外,还有例如航班号,航空公司等等等)
noSQL能做到什么地步?读写速度能不能达到要求呢?内存级别的缓存的话 6G数据量太大,而且多条件的查询,不知道如何处理了。。
望有相关经验的大神,提供一些思路,谢谢!

  • 写回答

1条回答

  • xiaoyao880609 2016-04-12 08:38
    关注

    推荐使用redis用来缓存,对于你这种需求redis完全可以胜任,接口返回的类型是json你可以直接将json存入redis,如果你要封装javabean存入redis,需要序列化。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?