CN107291920A - 一种机票查询缓存方法 - Google Patents
一种机票查询缓存方法 Download PDFInfo
- Publication number
- CN107291920A CN107291920A CN201710509760.9A CN201710509760A CN107291920A CN 107291920 A CN107291920 A CN 107291920A CN 201710509760 A CN201710509760 A CN 201710509760A CN 107291920 A CN107291920 A CN 107291920A
- Authority
- CN
- China
- Prior art keywords
- cache
- updating
- attribute
- trigger
- checking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000000411 inducer Substances 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 13
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009123 feedback regulation Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种机票查询缓存方法,包括:查询统计步骤;查询缓存步骤;缓存检查步骤;缓存更新步骤;主动缓存步骤。本发明在兼顾主动和被动缓存基础上,结合机票业务自身特点,将缓存更新与缓存控制参数的调整相结合结合,保证了缓存更新及时,缓存数据准确性高,缓存命中率高,同时有效减少了外部接口调用次数,控制了成本。与以往以经验值为准调整控制参数和统计数据不同,本发明根据实际状态动态调整,实时统计,反馈及时有效。
Description
技术领域
本发明属于数据缓存技术领域,涉及一种机票查询控制方法。
背景技术
机票资源供应系统用于向下对接航空公司等外部供应接口,向上提供统一标准查询服务。在机票资源供应系统中通常需要查询缓存,其主要原因有二:第一,数据源所依赖的外部接口,其性能参差不齐,响应时间长并且影响对客体验,需要将查询结果缓存来实现稳定时间内的响应。第二,供应商对调用接口次数有硬性要求,如按次收费,按查询出票比例收费等,因此要通过缓存把对外部接口的调用次数(成本)控制在合理范围。
而现有缓存技术通常分为两类,一类是主动缓存,一类是被动缓存。
主动缓存是以某一频率周期性地去调用外部接口,将获得数据存储在缓存中。因为机票资源的余位、价格变化频率高,并且航线航班舱位的数据总量大,所以除非高频次地主动刷新缓存,否则不能够及时更新价格和余位,进而导致缓存准确性低,调用成本高。为了解决上述问题,主动缓存在实际使用时,会截取部分航线和出发日期的笛卡尔乘积进行更新,但截取的航线和日期通常为经验数据,准确性不高,做不到按需更新,无用更新的占比高,因此缓存准确性得不到保证,造成成本浪费。
被动缓存是指当发生查询时,若未命中缓存,则调用外部接口,然后缓存该数据。此方法仅对发生过的查询生效,缓存失效时间与实际情况无法关联,比如,一次查询生成的缓存失效后,再次查询仍然需要调用外部接口,命中率得不到保证,响应时间也无法很好控制。
发明内容
针对现有主动缓存方法更新不及时、准确性低、调用接口成本高,被动缓存方法命中率低、缓存失效时间无法控制的问题,本发明公开了一种机票业务通用查询缓存方法,在兼顾主动和被动缓存基础上,结合机票业务自身特点,将缓存更新与缓存控制参数的调整相结合结合,保证了缓存更新及时,缓存数据准确性高,缓存命中率高,成本控制好。
为了达到上述目的,本发明提供如下技术方案:
一种机票查询缓存方法,包括如下步骤:
步骤1,查询统计
对每次机票查询进行统计,以出发日期、航线生成唯一标识,收集查询数据并同步到数据库,并统计热门信息;
步骤2,查询缓存
从缓存数据库中查询缓存,得到结果集缓存,结果集中的数据包括航班、舱位、价格组合,以及缓存的自身属性:缓存状态、命中计数、触发诱因、创建时间;当缓存未命中时跳至步骤4进行缓存更新,当缓存命中时执行步骤3;
步骤3,缓存检查
当缓存命中时,检查缓存状态、命中计数、阶梯时间、AV余位,当触发缓存刷新时,以相应的触发诱因通知缓存更新模块;
检查缓存状态过程包括:
检查缓存状态,当缓存状态非正常时,触发缓存刷新,当缓存可用时则本次查询的缓存结果仍然有效;
检查命中计数过程包括:
检查缓存的命中计数,当命中计数超过命中计数阀值,则认为缓存失效,则更新缓存状态表示命中计数超阀值,并触发缓存刷新;
检查阶梯时间过程包括:
检查缓存的创建时间属性,根据缓存有效期来判断缓存是否失效,当缓存失效时则更新缓存状态表示缓存超时失效,并触发缓存刷新;
检查AV余位过程包括:
当通过AV系统获取的余位数实际为0时,触发缓存刷新;
步骤4,缓存更新
步骤4-1,读取旧缓存,判断旧缓存状态是正常,且缓存创建时间在去重控制时间内时则不继续进行更新;
步骤4-2,对于符合更新条件的调用外部数据接口,等待接口返回数据后,更新一份新数据到缓存,新的缓存状态为正常,命中计数为0,将缓存相应的触发诱因和创建时间都会更新为当前值;
步骤4-3,更新缓存后,分析新旧缓存数据,统计缓存数据相应的触发诱因,检查各触发诱因对应的的占比期望、检查因子期望,当由该触发诱因导致的缓存更新频次或者占比超出正常范围,据此对该触发诱因的控制参数进行调整:当触发诱因的更新频次或占比过高时,对该诱因的控制参数放宽限制,当触发诱因的更新频次或占比过低时,对该诱因的控制参数加强限制,使得整体的更新量和占比趋近平衡;控制参数包括命中计数阀值、缓存有效期、去重控制时间以及与主动缓存相关的参数;
本方法还包括主动缓存步骤:
根据查询统计步骤获得的热门信息结合控制参数,对数据去重之后主动周期性地刷新缓存,即执行步骤4,主动刷新包括如下内容:过去一段时间内Top的热门查询、过去一段时间内出发的Top热门线路与未来若干天的笛卡尔乘积、当天的线上所有查询、接口调用失败的查询。
进一步的,所述对该触发诱因的控制参数进行调整的过程包括:
(1)通过实际占比和期望范围上下限计算调整单元一:
调整单元一=(实际占比-(期望下限+期望上限)/2)/(期望上限-期望下限)
(2)通过检查因子实际值和期望范围上下限计算调整单元二:
调整单元二=(实际值-(期望下限+期望上限)/2)/(期望上限-期望下限)×检查因子正负属性
(3)将调整单元一和调整单元二取和,结合调整控制参数的正负属性和调整单元的正负向,将预先设定的最小调整粒度与调整单元个数相乘,得到调整数值,从而对控制参数进行正向或负向的调整控制。
所述步骤4-3中,
当触发诱因是缓存未命中时,检查因子包括缓存命中率,属性为负,调整的控制参数包括:缓存有效期,属性为正;主动更新日期,属性为正;主动更新航线数,属性为正;主动更新每轮间隔,属性为负;
当触发诱因是命中计数超阀值时,检查因子包括命中计数平均值,属性为负,调整的控制参数包括:命中计数阀值,属性为正;
当触发诱因是缓存超时失效时,检查因子包括验价成功率,属性为正,调整的控制参数包括:缓存有效期,属性为正;
当触发诱因是AV余位数为0时,调整的控制参数包括:缓存有效期,属性为负;
当触发诱因是验价失败时,调整的控制参数包括:缓存有效期,属性为负;命中计数阀值,属性为负;去重控制时间,属性为负;
当触发诱因是热门航线主动缓存时,检查因子包括刷新一轮耗时,属性为正,调整的控制参数包括:主动更新日期,属性为负;主动更新航线数,属性为负;参考历史数据天数,属性为负。
进一步的,所述与主动缓存相关的参数包括:主动更新日期、主动更新航线数、参考历史数据天数、主动更新每轮间隔。
与现有技术相比,本发明具有如下优点和有益效果:
本发明在缓存更新判断条件中引入控制参数,并通过对新旧缓存的数据分析,依照触发诱因的更新频次或比例再对参数进行反馈调节,使得整体中各类型的更新量和占比趋近平衡;此外在主动缓存使用上,采用基于查询统计、信息反馈的参数动态调整方法,从而令缓存的更新不再盲目,而是有针对性、按需更新。与以往以经验值为准调整控制参数和统计数据不同,本发明根据实际状态动态调整,实时统计,反馈及时有效。采用本发明方法查询的缓存命中率高,数据更新及时,数据准确性高,同时有效减少了外部接口调用次数,控制了成本。
附图说明
图1为本发明方法整体步骤流程图。
图2为本发明方法中缓存更新步骤流程图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
应用本发明方法的机票业务中有以下几种业务和名词:
(1)机票查询条件,以单程为例,查询条件通常包括出发日期和航线。
(2)机票查询结果,一般至少包括航班、舱位、价格、余位数,由这4个关键点组成的结果集即为查询结果。
(3)机票余位系统(AV):这是基于中国航信提供服务的余位查询接口,可以获取精确的航班舱位余位数。
(4)验舱、验价、占位:查询之后的业务流程。验舱,检查航班舱位余位数(余位不足则失败);验价,检查航班舱位价格(价格变化则失败);占位,以客人信息进行占位,后续可支付出票。
本发明方法主要包括两大部分,一是在查询流程中,进行自动控制参数的缓存异步刷新,二是热门航线的主动缓存,即以一定频率周期性地更新热门航线的缓存,两个部分彼此独立。具体的说,如图1所示,本发明方法包括如下步骤:
步骤1,查询统计
对每次机票查询按照最细粒度进行统计,以出发日期、航线生成唯一标识,通过Redis的HINCRBY命令进行计数加1,保证了统计的实时性和原子性。查询统计功能会最终将用户查询数据同步到控制信息数据库。该步骤收集线上用户的真实查询数据,以此为基础统计出热门的航线和出发日期等,为主动缓存提供了精准的热门信息。控制信息数据库使用Redis+MySQL结合分别用作快速统计和数据持久化。
步骤2,查询缓存
从缓存数据库中查询缓存,缓存数据库以Redis的Hash结构来存储,其key唯一键为“航司_出发日期_出发城市_到达城市”,如MU_2017-03-25_NKG_CAN,表示查询接口为东航2017年3月25日南京到广州的结果集缓存。将结果集中的每一条数据(航班、舱位、价格组合、余位数)存储于Hash的键值对中。另外,Hash的键值对中还包含了缓存的自身属性:缓存状态status、命中计数matchCount、触发诱因source、创建时间createtime。
上述属性,用于进一步检查缓存和调整控制参数时使用。本例中,缓存状态属性包括表1中以下几种:
状态 | 描述 | 触发缓存刷新 | 缓存可用 |
normal | 正常 | 否 | 是 |
matchCountOverflow | 命中计数超阀值 | 是 | 是 |
elapseOvertime | 缓存超时失效 | 是 | 是 |
fail.check | 验价失败 | 是 | 否 |
fail.occupy | 占位失败 | 是 | 否 |
表1
除normal外,其余几种状态属性反应了缓存的几种非正常状态,但在命中计数超阀值和缓存超时失效时,本发明认为缓存依然可用,这些属性状态下会继续后续流程,当缓存不可用时,查询缓存无结果。
本步骤中当缓存未命中时跳至步骤4进行缓存更新,将缓存未命中作为触发诱因通知缓存更新模块;当缓存命中时执行步骤3。
步骤3,缓存检查
如果缓存命中,则读取控制信息数据库中的控制信息(包括自动控制参数)后,开始四步缓存检查:
步骤3-1,状态检查,检查缓存的status属性,按照表1中的缓存状态,判断是否触发(异步)刷新缓存,表1中,除状态正常外的其他状态均会触发缓存刷新。如缓存可用则本次查询的缓存结果仍然有效,否则跳出步骤3。本发明采用异步刷新方式可以减少查询接口的等待时间。触发缓存刷新时,将触发刷新的相应诱因通知缓存更新模块刷新缓存,本例中触发诱因为表1中非正常的缓存状态。
步骤3-2,命中计数检查,检查缓存的matchCount属性,当该数字超过控制参数中的命中控制阀值时,则会认为缓存失效,缓存状态更新为matchCountOverflow,触发缓存刷新,并将缓存未命中作为触发诱因通知缓存更新模块。查询缓存每次被命中时,matchCount属性数字会加1(Redis的HINCRBY实现,保证操作原子性。每当发生一次验价则重置计数为0,结合机票业务,其理论为:若某一日期航线多次被查询,超过正常阀值却不被客人采纳(发生验价),可能其价格已经不具备竞争力,需要更新。
步骤3-3,阶梯时间检查,检查缓存的createtime属性,通过计算createtime与当前时间的差值可以得出缓存已经创建的时长,与缓存有效期比较来判断缓存是否失效。缓存有效期可以根据需要进行设置,也可以设计简单的计算方法自动运算得出,其基本理论为,出发日期越近,缓存有效期越短;航线越热门(依赖“查询统计”统计的航线排名数据),缓存有效期越短。如果缓存失效,则状态置为elapseOvertime,并触发缓存刷新,将缓存超时失效作为触发诱因通知缓存更新模块。
如表2所示,本例以以日期和航线两个维度设定一部分缓存失效时长的初始值,如出发0-3天内的前500条热门航线,缓存1小时失效,以此类推。但此部分控制信息会在系统运行过程中,自动调整。
表2
步骤3-4,AV余位检查,缓存信息中存储了余位数,根据业务场景,余位数的变化频率远高于价格变化(热门航线余位每秒都在变化,而价格变化可以放长到小时甚至天),真实余位数通过航信的AV系统获取,即查询结果不依赖于缓存中的余位数(缓存的余位数不再准确),使得缓存时间可以放长到小时级别。此时,当通过AV系统获取的某舱位的余位数实际为0时,表示可能会有新舱位新价格投放,触发一次缓存刷新,将AV余位数为0作为触发诱因通知缓存更新模块。
上述四个步骤任一步触发刷新缓存,会以不同的“触发诱因”去通知“缓存更新模块”,在缓存数据分析时,“触发诱因”会作为重要的条件参与到反馈系统调节中。
步骤4,缓存更新
本步骤为缓存更新模块实现的功能,如图2所示,本步骤包括以下几个分步骤:
步骤4-1,从控制信息数据库中读取自动控制参数,读取旧缓存(当前缓存),根据旧缓存的缓存属性,判断旧缓存状态是正常,且缓存创建时间在去重控制时间内时则不符合更新条件,不继续进行更新,这样能够避免分布式系统中的并发、频繁刷新同一份缓存。
步骤4-2,对于符合更新条件的调用外部数据接口,等待接口返回数据后,更新一份新数据到缓存,新的缓存状态为normal正常,命中计数为0,将缓存相应的触发诱因和创建时间都更新为当前值,当前值即为缓存更新模块接收到的触发诱因;
步骤4-3,更新缓存后,分析全部新旧缓存数据,统计缓存数据相应的触发诱因,检查各触发诱因对应的的占比期望、检查因子期望,分析该触发诱因的更新频次是否过高(低),或者占比过高(低),据此对该诱因的参数放宽限制(加强限制),使得整体的更新量和占比趋近平衡。本实施例以计算触发诱因的占比为例进行阐述。
步骤4-4,对新旧缓存分析对比之后,会将分析结果异步通知到反馈单元,反馈单元会统计触发诱因的占比,对结果进行存储,并决定是否调整控制信息(参数),若需要则更新控制信息数据库。
不同触发诱因对应的占比期望值、检查因子、检查因子期望和调整参数均有所不同,应预先设置,表3列出了较为优选的一种方式
表3
表3中,占比表示此类触发诱因的更新次数占所有更新次数的比例,占比期望和检查因子期望为业务指标或系统指标,根据表3列出的内容,按如下步骤进行:
(1)占比计算:占比实际值在占比期望范围内不做调整,否则计算实际值与期望平均值的差值,差值除以期望范围(目前均为5%)取整为一个调整单元,实际占比高于占比期望为正向,否则为负向。
调整单元=(实际占比-(期望下限+期望上限)/2)/(期望上限-期望下限)
(2)检查因子(若存在)计算:实际值在检查因子期望范围内不做调整,否则计算实际值与期望平均值的差值,差值除以期望范围取整为一个调整单元,需要按照检查因子规定的正负属性生成调整单元正负向。
调整单元=(实际值-(期望下限+期望上限)/2)/(期望上限-期望下限)×检查因子正负属性
(3)上述步骤生成的调整单元取和,按顺序依次作用于调整参数,结合调整参数的正负属性和调整单元的正负向,按表4给出的最小调整粒度×调整单元个数,进行正向或负向的控制。
本例中各自动控制参数及其最小调整粒度如下表4所示:
表4
以下举例说明,例如,当触发诱因为“缓存未命中”,其实际占比为23%,缓存命中率为79%时,
占比计算:(23%-(15%+20%)/2)/(20%-15%)=1,取整为1个正向调整单元。
检查因子计算:(79%-(85%+90%)/2)/(90%-85%)×-1=1,取整为1个正向调整单元。
共计2个正向调整单元,依次作用于调整参数:
a)缓存有效期:正向属性,增加(正向)该查询日期和航线在表2中所属维度的有效期5分钟×2=10分钟。
b)主动更新日期:正向属性,增加(正向)主动更新日期1天×2=2天。
c)主动更新航线数:正向属性,增加(正向)主动更新热门航线5×2=10条。
d)主动更新每轮间隔:负向属性,减少(负向)主动更新每轮间隔1分钟×2=2分钟。
上述四步,a)增加了缓存有效期,b)c)d)步骤增加了主动缓存的更新范围和频次,目的都是用来降低缓存未命中的占比,提高缓存命中率,从而能够令整体的更新量和占比趋近平衡。
本方法还包括主动缓存步骤,主动缓存针对热门航线,独立于查询流程中触发的缓存刷新。主动缓存步骤顺序与前述步骤1-4无关,是以某一频率周期性地去调用外部接口,将获得数据存储在缓存中。主动刷新周期通过控制参数中“主动更新每轮间隔”设定。本步骤依据查询统计步骤获得的热门信息结合控制参数进行,刷新的包括如下内容:过去N天内Top的热门查询(出发日期+航线,航线数由控制参数中的“主动更新航线数”控制)、过去N天内出发的Top热门线路与未来若干天的笛卡尔乘积、当天的线上所有查询、接口调用失败的查询。上述“过去N天”根据控制参数中的“参考历史数据天数”得来,而未来若干天数根据控制参数中的“主动更新日期”得来。
每一轮的主动缓存,首先从查询统计中获取上述数据,数据中会有重复的出发日期+航线,去重之后进行主动刷新。主动缓存的可自动调整参数包括:主动更新日期、主动更新航线数、参考历史数据天数、每轮间隔等,也存储于控制信息数据库,随反馈装置自动调整。这些自动控制参数及其控制逻辑参见表3。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (4)
1.机票查询缓存方法,其特征在于,包括如下步骤:
步骤1,查询统计
对每次机票查询进行统计,以出发日期、航线生成唯一标识,收集查询数据并同步到数据库,并统计热门信息;
步骤2,查询缓存
从缓存数据库中查询缓存,得到结果集缓存,结果集中的数据包括航班、舱位、价格组合,以及缓存的自身属性:缓存状态、命中计数、触发诱因、创建时间;当缓存未命中时跳至步骤4进行缓存更新,当缓存命中时执行步骤3;
步骤3,缓存检查
当缓存命中时,检查缓存状态、命中计数、阶梯时间、AV余位,当触发缓存刷新时,以相应的触发诱因通知缓存更新模块;
其中,
检查缓存状态过程包括:
检查缓存状态,当缓存状态非正常时,触发缓存刷新,当缓存可用时则本次查询的缓存结果仍然有效;
检查命中计数过程包括:
检查缓存的命中计数,当命中计数超过命中计数阀值,则认为缓存失效,则更新缓存状态表示命中计数超阀值,并触发缓存刷新;
检查阶梯时间过程包括:
检查缓存的创建时间属性,根据缓存有效期来判断缓存是否失效,当缓存失效时则更新缓存状态表示缓存超时失效,并触发缓存刷新;
检查AV余位过程包括:
当通过AV系统获取的余位数实际为0时,触发缓存刷新;
步骤4,缓存更新
步骤4-1,读取旧缓存,判断旧缓存状态是正常,且缓存创建时间在去重控制时间内时则不继续进行更新;
步骤4-2,对于符合更新条件的调用外部数据接口,等待接口返回数据后,更新一份新数据到缓存,新的缓存状态为正常,命中计数为0,将缓存相应的触发诱因和创建时间都更新为当前值;
步骤4-3,更新缓存后,分析新旧缓存数据,统计缓存数据相应的触发诱因,检查各触发诱因对应的的占比期望、检查因子期望,当由该触发诱因导致的缓存更新频次或者占比超出正常范围,对该触发诱因的控制参数进行调整:当触发诱因的更新频次或占比过高时,对该诱因的控制参数放宽限制,当触发诱因的更新频次或占比过低时,对该诱因的控制参数加强限制,使得整体的更新量和占比趋近平衡;控制参数包括命中计数阀值、缓存有效期、去重控制时间以及与主动缓存相关的参数;
本方法还包括主动缓存步骤:
根据查询统计步骤获得的热门信息结合控制参数,对数据去重之后主动周期性地刷新缓存即执行步骤4,主动刷新包括如下内容:过去一段时间内Top的热门查询、过去一段时间内出发的Top热门线路与未来若干天的笛卡尔乘积、当天的线上所有查询、接口调用失败的查询。
2.根据权利要求1所述的机票查询缓存方法,其特征在于,所述对该触发诱因的控制参数进行调整的过程包括:
(1)通过实际占比和期望范围上下限计算调整单元一:
调整单元一=(实际占比-(期望下限+期望上限)/2)/(期望上限-期望下限)
(2)通过检查因子实际值和期望范围上下限计算调整单元二:
调整单元二=(实际值-(期望下限+期望上限)/2)/(期望上限-期望下限)×检查因子正负属性
(3)将调整单元一和调整单元二取和,结合调整控制参数的正负属性和调整单元的正负向,将预先设定的最小调整粒度与调整单元个数相乘,得到调整数值,从而对控制参数进行正向或负向的调整控制。
3.根据权利要求1或2所述的机票查询缓存方法,其特征在于:所述步骤4-3中,
当触发诱因是缓存未命中时,检查因子包括缓存命中率,属性为负,调整的控制参数包括:缓存有效期,属性为正;主动更新日期,属性为正;主动更新航线数,属性为正;主动更新每轮间隔,属性为负;
当触发诱因是命中计数超阀值时,检查因子包括命中计数平均值,属性为负,调整的控制参数包括:命中计数阀值,属性为正;
当触发诱因是缓存超时失效时,检查因子包括验价成功率,属性为正,调整的控制参数包括:缓存有效期,属性为正;
当触发诱因是AV余位数为0时,调整的控制参数包括:缓存有效期,属性为负;
当触发诱因是验价失败时,调整的控制参数包括:缓存有效期,属性为负;命中计数阀值,属性为负;去重控制时间,属性为负;
当触发诱因是热门航线主动缓存时,检查因子包括刷新一轮耗时,属性为正,调整的控制参数包括:主动更新日期,属性为负;主动更新航线数,属性为负;参考历史数据天数,属性为负。
4.根据权利要求1所述的机票查询缓存方法,其特征在于,所述与主动缓存相关的参数包括:
主动更新日期、主动更新航线数、参考历史数据天数、主动更新每轮间隔。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710509760.9A CN107291920B (zh) | 2017-06-28 | 2017-06-28 | 一种机票查询缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710509760.9A CN107291920B (zh) | 2017-06-28 | 2017-06-28 | 一种机票查询缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291920A true CN107291920A (zh) | 2017-10-24 |
CN107291920B CN107291920B (zh) | 2021-02-02 |
Family
ID=60099094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710509760.9A Active CN107291920B (zh) | 2017-06-28 | 2017-06-28 | 一种机票查询缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291920B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108009245A (zh) * | 2017-11-30 | 2018-05-08 | 平安养老保险股份有限公司 | 产品价值获取方法、装置、计算机设备及存储介质 |
CN108255959A (zh) * | 2017-12-21 | 2018-07-06 | 武汉斑马快跑科技有限公司 | 一种Redis中数据查询方法及装置 |
CN109961323A (zh) * | 2019-03-19 | 2019-07-02 | 深圳市活力天汇科技股份有限公司 | 一种航班燃油费实时更新方法 |
CN110866206A (zh) * | 2018-08-27 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 数据更新设置方法和装置 |
CN111949857A (zh) * | 2020-08-13 | 2020-11-17 | 中国民航信息网络股份有限公司 | 一种航班查询请求的处理方法、装置及电子设备 |
CN112307328A (zh) * | 2020-09-24 | 2021-02-02 | 北京沃东天骏信息技术有限公司 | 用于处理信息的方法和装置 |
CN112699153A (zh) * | 2021-01-14 | 2021-04-23 | 上海交通大学 | 机票查询中的缓存存活时间设置与协同更新方法和系统 |
CN112734064A (zh) * | 2019-10-14 | 2021-04-30 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、设备及存储介质 |
CN112783908A (zh) * | 2021-01-04 | 2021-05-11 | 重庆周游科技有限公司 | 一种机票数据高效缓存方法 |
CN113177874A (zh) * | 2021-04-30 | 2021-07-27 | 北京沃东天骏信息技术有限公司 | 一种航司报价数据的查询方法及查询系统 |
CN113821520A (zh) * | 2021-01-15 | 2021-12-21 | 北京沃东天骏信息技术有限公司 | 缓存更新方法和装置 |
CN114138840A (zh) * | 2021-12-08 | 2022-03-04 | 中国建设银行股份有限公司 | 数据查询方法、装置、设备及存储介质 |
CN116186059A (zh) * | 2023-04-24 | 2023-05-30 | 民航成都信息技术有限公司 | 航班数据的更新方法、系统、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314397A (zh) * | 2011-09-23 | 2012-01-11 | 浙江大学 | 缓存数据块的处理方法 |
US20140075258A1 (en) * | 2012-09-13 | 2014-03-13 | Novelsat Ltd. | Iterative receiver loop |
CN104731719A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
CN105630982A (zh) * | 2015-12-25 | 2016-06-01 | 中国民航信息网络股份有限公司 | 航班数据缓存方法及系统 |
CN106407347A (zh) * | 2016-09-05 | 2017-02-15 | 北京奇虎科技有限公司 | 一种缓存数据的方法和装置 |
-
2017
- 2017-06-28 CN CN201710509760.9A patent/CN107291920B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314397A (zh) * | 2011-09-23 | 2012-01-11 | 浙江大学 | 缓存数据块的处理方法 |
US20140075258A1 (en) * | 2012-09-13 | 2014-03-13 | Novelsat Ltd. | Iterative receiver loop |
CN104731719A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
CN105630982A (zh) * | 2015-12-25 | 2016-06-01 | 中国民航信息网络股份有限公司 | 航班数据缓存方法及系统 |
CN106407347A (zh) * | 2016-09-05 | 2017-02-15 | 北京奇虎科技有限公司 | 一种缓存数据的方法和装置 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108009245A (zh) * | 2017-11-30 | 2018-05-08 | 平安养老保险股份有限公司 | 产品价值获取方法、装置、计算机设备及存储介质 |
CN108255959A (zh) * | 2017-12-21 | 2018-07-06 | 武汉斑马快跑科技有限公司 | 一种Redis中数据查询方法及装置 |
CN110866206B (zh) * | 2018-08-27 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 数据更新设置方法和装置 |
CN110866206A (zh) * | 2018-08-27 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 数据更新设置方法和装置 |
CN109961323A (zh) * | 2019-03-19 | 2019-07-02 | 深圳市活力天汇科技股份有限公司 | 一种航班燃油费实时更新方法 |
CN112734064B (zh) * | 2019-10-14 | 2024-10-18 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、设备及存储介质 |
CN112734064A (zh) * | 2019-10-14 | 2021-04-30 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、设备及存储介质 |
CN111949857A (zh) * | 2020-08-13 | 2020-11-17 | 中国民航信息网络股份有限公司 | 一种航班查询请求的处理方法、装置及电子设备 |
CN111949857B (zh) * | 2020-08-13 | 2024-06-11 | 中国民航信息网络股份有限公司 | 一种航班查询请求的处理方法、装置及电子设备 |
CN112307328A (zh) * | 2020-09-24 | 2021-02-02 | 北京沃东天骏信息技术有限公司 | 用于处理信息的方法和装置 |
CN112783908A (zh) * | 2021-01-04 | 2021-05-11 | 重庆周游科技有限公司 | 一种机票数据高效缓存方法 |
CN112699153B (zh) * | 2021-01-14 | 2023-03-24 | 上海交通大学 | 机票查询中的缓存存活时间设置与协同更新方法和系统 |
CN112699153A (zh) * | 2021-01-14 | 2021-04-23 | 上海交通大学 | 机票查询中的缓存存活时间设置与协同更新方法和系统 |
CN113821520A (zh) * | 2021-01-15 | 2021-12-21 | 北京沃东天骏信息技术有限公司 | 缓存更新方法和装置 |
CN113177874B (zh) * | 2021-04-30 | 2024-05-24 | 北京沃东天骏信息技术有限公司 | 一种航司报价数据的查询方法及查询系统 |
CN113177874A (zh) * | 2021-04-30 | 2021-07-27 | 北京沃东天骏信息技术有限公司 | 一种航司报价数据的查询方法及查询系统 |
CN114138840A (zh) * | 2021-12-08 | 2022-03-04 | 中国建设银行股份有限公司 | 数据查询方法、装置、设备及存储介质 |
CN116186059A (zh) * | 2023-04-24 | 2023-05-30 | 民航成都信息技术有限公司 | 航班数据的更新方法、系统、电子设备及存储介质 |
CN116186059B (zh) * | 2023-04-24 | 2023-06-30 | 民航成都信息技术有限公司 | 航班数据的更新方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107291920B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291920B (zh) | 一种机票查询缓存方法 | |
EP2911070B1 (en) | Long-term validity of pre-computed request results | |
US11030101B2 (en) | Cache storage for multiple requesters and usage estimation thereof | |
US20140052750A1 (en) | Updating cached database query results | |
CN108984571B (zh) | 事务标识操作方法、系统和计算机可读存储介质 | |
CN104462432A (zh) | 自适应的分布式计算方法 | |
CN105468784A (zh) | 处理高并发流量的方法及其装置 | |
CN108762919A (zh) | 一种程序内存处理系统及方法 | |
CN107885743A (zh) | 一种基于缓存的航班余位查询方法 | |
WO2020220436A1 (zh) | 面向不同老化场景的虚拟机工作队列和冗余队列更新方法 | |
CN112734064B (zh) | 一种数据处理方法、设备及存储介质 | |
CN106777311A (zh) | 航班舱位状态缓存方法和系统 | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询系统 | |
CN105741070B (zh) | 一种海量实时舱位运价结果数据快速差异更新存储的方法 | |
CN118210735A (zh) | 用于分配缓存资源的方法和系统 | |
KR20150085034A (ko) | 지능형 전력 공급 결정을 위한 메모리 뱅크 유틸리티 및 비용 추적 | |
CN106126434B (zh) | 中央处理器的缓存区的缓存行的替换方法及其装置 | |
US20150234890A1 (en) | Long-term validity of pre-computed request results | |
CN109313579A (zh) | 低重新分发的负载均衡 | |
CN105577756A (zh) | 采用交叉备份的分布式数据库日志收集与负载调节系统及其方法 | |
CN113177874B (zh) | 一种航司报价数据的查询方法及查询系统 | |
Quaglia et al. | Grain sensitive event scheduling in time warp parallel discrete event simulation | |
WO2015124275A1 (en) | Long-term validity of pre-computed request results | |
JP2019213289A (ja) | 電力調整制御装置および方法 | |
CN111008875B (zh) | 一种基于个人实时计算群优惠的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |