问题描述
- 如何缓存大量机票的数据,优化航班的查询
-
先说说应用的场景,要做一套机票查询和预定以及支付的系统。
连接第三方机票数据接口,
但是对方只提供了一种查询机票的方式:通过出发地和目的地,还有日期,
可以返回那天所有航班的信息 包括航班号,起飞和到达的时间,以及每种舱位(经济舱,头等舱等等n种舱位)的价格和折扣信息等等。
例如请求上海到北京在2016年7月1日的航班 会返回大概好多航班和各个舱位对应的价格。
数据结构比较复杂,大概三四层的json,一天的单程航班信息,整体的数据量大概在250KB,非常巨大。
对方接口访问速度非常慢 第一次需要20s左右,对方应该也做了缓存,之后大概半小时内,访问速度有5s左右,也十分的慢为了提高我们机票系统的访问效率,需要做一套缓存系统,
要缓存这些数据,目标是缓存30天 1000个航班的数据,数据量大概要6个G。
还要考虑刷新机票数据的时间间隔,既不能间隔太长(数据时效性要求较高),又不能间隔太短(担心写入速度不够快,而且对方接口是付费的)
开始考虑使用mysql 但是刷新一次数据速度极慢,但是优点是数据结构比较容易处理,便于各种查询。
求解,还有什么别的好办法,既能相对快速的从外部接口拉下来数据进行数据读写,又便于各种查询(查询维度比较多,除了基本的出发城市到达城市和日期之外,还有例如航班号,航空公司等等等)
noSQL能做到什么地步?读写速度能不能达到要求呢?内存级别的缓存的话 6G数据量太大,而且多条件的查询,不知道如何处理了。。
望有相关经验的大神,提供一些思路,谢谢!
解决方案
SQL大量数据查询的优化
SQL大量数据查询的优化
SQL大量数据查询的优化
解决方案二:
推荐使用redis用来缓存,对于你这种需求redis完全可以胜任,接口返回的类型是json你可以直接将json存入redis,如果你要封装javabean存入redis,需要序列化。
时间: 2024-11-02 16:45:48