揭秘车票查询背后的复杂性
🚀 如何把12306项目“吃透”?
如果你正在为校招面试做准备,面临着简历上“烂大街”的项目,面试机会较少,或者希望将 12306 项目充实到简历中等问题,欢迎了解「拿个offer-开源&项目实战」知识星球。我们提供以下主要服务:
- 面试服务:获取完整项目文档与教学视频,涵盖项目从零到一的启动方法,如何在简历中突显 12306 项目经验,项目亮点解析,以及分享包含 12306 面试真题的大厂面试经验。
- 项目学习:向我1v1发起问题提问,包括但不限于 12306 项目,会认真对待每个问答;提供简历编写指南服务,同时使用星球内部公有云中间件环境,避免本地环境开发的繁琐配置。
在文章正式开始前,大家打开 12306.cn 搜索一趟列车,根据搜索条件判断,数据搜索技术使用 ElasticSearch 或者其它搜索技术是否合适?
这里我先把答案说下,12306 车票搜索用的是 Redis ,而不是大家常用的 ElasticSearch。至于为什么?大家可以先思考下再继续阅读。
12306 列车搜索条件
先来一张 12306 列车检索的截图,让大家看下 12306 都有哪些搜索条件。

搜索条件如下:
- 单程或者往返
- 出发地
- 目的地
- 出发日或者返程日
- 普通或者学生
- 车次类型
- 出发车站
- 到达车站
- 车次席别
- 发车时间
- 显示积分兑换车次
- 显示全部可预订车次
许多同学都感到疑惑,因为搜索条件实在太多了,这似乎会严重影响数据库的性能。有些人甚至认为,如果性能不佳,至少应该使用 Elasticsearch 等搜索引擎来处理。这也是我一开始的想法,与大多数同学一致。
然而,随着进一步的思考,我发现了一个有意思的页面交互,这改变了我的看法。跟着马哥的思路,一起来深入探讨一下。