一种实时更新缓存的方法和系统的制作方法

文档序号:6429627阅读:122来源:国知局
专利名称:一种实时更新缓存的方法和系统的制作方法
技术领域
本发明属于搜索技术领域,尤其涉及一种实时更新缓存的方法和系统。
背景技术
目前,在移动互联的应用业务中,关键字搜索是一个比较常见的业务。用户提交关键字搜索,在服务器端需要做多个子产品匹配,如用户搜索“刘德华”,服务器端需要匹配的子产品可能有音乐、铃声、电子书、视频、图片、新闻、八卦等。因为每个子产品资源记录都是单独存储在一个数据表中的,所以,当进行关键字搜索时,服务器需要分别对每一个子产品的数据表进行搜索,最终才汇总出用户需要的全部搜索结果。现有技术的搜索方法主要包括两种,第一种搜索方法为用户每一次提交关键字搜索,服务器端都去各个子产品的数据表搜索结果。例如假定用户提交的关键字需要匹配 10个子产品,每一个子产品数据表的模糊搜索都可能花费1秒的时间,那么,10个子产品的数据表搜索就要花费掉10秒左右的时间,而且是每一次用户提交,都要重新进行搜索,这种搜索方法会导致返回搜索结果太慢,影响用户使用体验,并增大数据库的负荷。第二种搜索方法是第一种方法的优化,采用一天过期的缓存机制。即将某个关键字搜索结果缓存起来,待后面的用户再来搜索该关键字时,不用去数据表中搜索,直接将缓存中的搜索结果返回给用户,同时,为了保证数据更新,在一天后该关键字的缓存会删除掉,当用户再来搜索该关键字时,服务器端会重新去数据表中搜索结果返回给用户,并将该搜索结果缓存起来,重新实行一天过期的缓存机制。这种采用一天过期的缓存机制的方法虽然大大减少了返回搜索结果给部分用户的时间和减少了数据库的负荷,但当数据表的资源记录有变化(增加、修改和删除)时,缓存数据得不到实时的更新,每天还是至少有一个用户需要花费较长的等待时间去数据表中重新搜索结果,也会影响用户的使用体验。显然, 这种关键字搜索方法还是有待优化的。

发明内容
本发明提供了一种实时更新缓存的方法和系统,旨在解决的现有技术中由于缓存数据得不到实时更新影响用户使用体验的问题。本发明是这样实现的,一种实时更新缓存的方法,包括步骤a 在资源管理服务器增加更新缓存功能;步骤b 判断资源记录是否发生变化,如果资源记录发生变化,执行步骤c ;如果资源记录没有发生变化,结束本次缓存更新;步骤c 将新的资源记录加入数据库中,并实时更新缓存列表中的缓存数据。本发明的技术方案还包括所述步骤C具体还包括获取发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中。本发明的技术方案还包括所述步骤c具体还包括判断缓存服务器中是否存在缓存列表,如果存在缓存列表,则遍历缓存列表;如果不存在缓存列表,结束本次缓存更新。本发明的技术方案还包括所述步骤c具体还包括遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中没有缓存关键字,结束本次缓存更新;如果缓存列表中有缓存关键字,取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字。本发明的技术方案还包括所述步骤c还包括如果资源更新列表中包含该缓存关键字,查询数据库重新搜索该缓存关键字对应的新的搜索结果,删除缓存列表中该缓存关键字的缓存数据,将新的搜索结果加入到缓存列表中;如果关键字更新列表中不包含该缓存关键字,则重新遍历缓存列表。本发明的技术方案还包括在所述步骤c后还包括接收用户的关键字搜索请求, 判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,从缓存列表中读取该关键字对应的搜索结果并输出到移动终端用户;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,则通过查询数据库得到该关键字对应的搜索结果,并将该关键字以及对应的搜索结果加入缓存列表中,并输出到移动终端用户。本发明采取的另一技术方案为一种实时更新缓存的系统,包括缓存服务器、数据库和资源管理服务器,所述缓存服务器用于缓存关键字以及该关键字所对应的搜索结果; 所述资源管理服务器用于进行资源编辑操作,所述资源管理服务器还包括缓存更新模块, 所述缓存更新模块包括第一判断单元和数据更新单元,所述第一判断单元用于判断资源记录是否发生变化,如果资源记录发生变化,通过数据更新单元更新缓存数据;如果资源记录没有发生变化,结束本次缓存更新;所述数据更新单元用于将新的资源记录加入数据库中,并实时更新缓存列表中的缓存数据。本发明的技术方案还包括所述实时更新缓存的系统还包括移动终端和web服务器,所述移动终端用于向Web服务器提交关键字请求搜索结果;所述Web服务器用于接收移动终端提交的关键字搜索结果请求,并返回搜索结果给移动终端。本发明的技术方案还包括所述缓存更新模块还包括资源搜索单元,所述资源搜索单元用于通过搜索条件得出发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中。本发明的技术方案还包括所述缓存更新模块还包括第二判断单元、第三判断单元和第四判断单元,所述第二判断单元用于判断缓存服务器中是否存在缓存列表,如果存在缓存列表,通过第三判断单元遍历缓存列表;如果不存在缓存列表,结束本次缓存更新;所述第三判断单元用于遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中有缓存关键字,通过第四判断单元判断资源更新列表中是否包含该缓存关键字;如果缓存列表中没有缓存关键字,结束本次缓存更新;所述第四判断单元用于取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字,如果资源更新列表中包含该缓存关键字,通过数据更新单元重新搜索数据库; 如果关键字更新列表中不包含该缓存关键字,则通过第三判断单元重新遍历缓存列表。本发明的技术方案具有如下优点或有益效果本发明实时更新缓存的方法和系统通过在资源管理服务器中增加更新缓存功能,当资源有变化时,程序会判断变化的资源是否会影响到缓存列表中关键字的搜索结果,如果会影响,则资源管理后台会重新搜索数据库取得最新的搜索结果,并替换原来在缓存列表中的缓存数据;本发明既可以保证发生变化的资源记录能得到实时的更新,又不需要采用一天过期的机制,减少了服务器端每一天都要对所有关键字重新在数据库中搜索花费的时间,提升用户的使用体验。


附图1是本发明第一实施例的实时更新缓存的方法的流程图;附图2是本发明实时更新缓存的方法的用户请求关键字搜索结果的过程的流程图;附图3是本发明第二实施例的实时更新缓存的方法的流程图;附图4是本发明第一实施例的实时更新缓存的系统的结构示意图;附图5是本发明第二实施例的实时更新缓存的系统的结构示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。请参阅图1,是本发明第一实施例的实时更新缓存的方法的流程图。本发明第一实施例的实时更新缓存的方法包括以下步骤步骤100 在资源管理服务器增加一个更新缓存功能;在步骤100中,资源管理服务器用于后台编辑人员进行资源编辑操作,现有的资源管理服务器只能做资源记录的增加、修改和删除操作,本发明则在资源管理服务器中增加一个更新缓存功能,该更新缓存功能在判断到资源记录有变化(增加、修改和删除)时, 会实时更新缓存服务器中缓存列表的缓存数据;其中,缓存列表用于缓存关键字以及该关键字所对应的搜索结果。步骤110 当资源有变化时,遍历缓存列表的关键字,判断变化的资源是否会影响到该关键字的搜索结果,如果影响到该关键字的搜索结果,执行步骤120 ;如果没有影响到该关键字的搜索结果,执行步骤130 ;在步骤110中,资源的变化包括增加、修改或/和删除等操作。步骤120 进行该关键字的搜索请求,从数据表中取得最新的搜索结果,然后将这个搜索结果替换原来在缓存列表中的缓存数据;步骤130 结束本次缓存更新。请参阅图2,是本发明实时更新缓存的方法的用户请求关键字搜索结果的过程的流程图。是本发明实时更新缓存的方法的用户请求关键字搜索结果的过程的包括以下步骤步骤200 通过移动终端提交关键字请求搜索结果;步骤210 接收该关键字搜索结果请求;步骤220 判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,执行步骤230 ;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,执行步骤MO ;其中,缓存列表用于缓存关键字以及该关键字所对应的搜索结果。步骤230 从缓存列表中读取该关键字对应的搜索结果,并执行步骤250 ;步骤MO 通过查询数据库得到该关键字对应的搜索结果,并将该关键字以及对应的搜索结果加入缓存列表中;步骤250 将该关键字搜索结果输出到移动终端用户;步骤沈0 结束本次请求。请参阅图3,是本发明第二实施例的实时更新缓存的方法的流程图。本发明第二实施例的实时更新缓存的方法包括以下步骤步骤300 在资源管理服务器增加一个更新缓存功能;在步骤300中,资源管理服务器用于后台编辑人员进行资源编辑操作,现有的资源管理服务器只能做资源记录的增加、修改和删除操作,本发明则在资源管理服务器中增加一个更新缓存功能,该更新缓存功能在判断到资源记录有变化(增加、修改和删除)时, 会实时更新缓存服务器中缓存列表的缓存数据;其中,缓存列表用于缓存关键字以及该关键字所对应的搜索结果。步骤310 判断资源记录是否发生变化,如果资源记录发生变化,执行步骤320 ;如果资源记录没有发生变化,执行步骤390 ;其中,资源记录的变化包括增加、修改或/和删除等操作。步骤320 将新的资源记录加入数据库中;步骤330 通过搜索条件得出发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中;其中,搜索条件包括资源记录中的一个或多个字段,如在音乐搜索中,搜索关键字 “周杰伦”,服务器端会去匹配歌手名和歌曲名这二个字段。步骤340 判断缓存服务器中是否存在缓存列表,如果存在缓存列表,执行步骤 350 ;如果不存在缓存列表,执行步骤390 ;步骤350 遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中有缓存关键字,执行步骤360 ;如果缓存列表中没有缓存关键字,执行步骤390 ;步骤360 取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字, 如果资源更新列表中包含该缓存关键字,执行步骤370 ;如果关键字更新列表中不包含该缓存关键字,则重新执行步骤350 ;该步骤中,程序会判断变化的资源记录是否会影响到该关键字对应的搜索结果, 如果资源更新列表中包含该缓存关键字,说明变化的资源记录会影响该关键字对应的搜索结果,则资源管理后台会做一个该关键字搜索请求,重新搜索数据表取得最新的搜索结果, 再将该搜索结果替换原来缓存列表中的缓存数据;反之,如果资源更新列表中不包含该缓存关键字,则说明变化的资源记录不会影响该关键字对应的搜索结果;其中,判断变化的资源记录是否会影响关键字搜索结果的具体判断方式为在搜索业务中,服务器端会根据搜索关键字去匹配资源记录中的一个或多个字段,如在音乐搜索中,用户提交“周杰伦”关键字搜索,服务器端会用“周杰伦”这个关键字去匹配歌手名和歌曲名这二个字段,再将能匹配的资源记录检索出来提供给搜索用户。反过来,如果在资源管理后台中修改(或增加) 了一条歌手名为“周杰伦”、歌曲名为“七里香”的资源记录,可以得知,受影响的关键字搜索结果至少有“周杰伦”和“七里香”这二个关键字。步骤370 查询数据库重新搜索该缓存关键字对应的新的搜索结果;步骤380 删除缓存列表中该缓存关键字的缓存数据,将新的搜索结果加入到缓存列表中,并重新执行步骤350 ;步骤390 结束本次缓存更新。请参与图4,是本发明第一实施例的实时更新缓存的系统的结构示意图。本发明第一实施例的实时更新缓存的系统包括移动终端、web服务器、缓存服务器、数据库和资源管理服务器,移动终端用于向Web服务器提交关键字请求搜索结果;Web服务器用于接收移动终端提交的关键字搜索结果请求,并返回搜索结果给移动终端;缓存服务器中包括缓存列表,用于缓存关键字以及该关键字所对应的搜索结果;资源管理服务器用于进行资源编辑操作,资源管理服务器还包括缓存更新模块, 缓存更新模块包括第一判断单元和数据更新单元,其中第一判断单元用于判断资源记录是否发生变化,如果资源记录发生变化,通过数据更新单元更新缓存数据;如果资源记录没有发生变化,结束本次缓存更新;其中,资源记录的变化包括增加、修改或/和删除。数据更新单元用于将新的资源记录加入数据库中,并实时更新缓存列表中的缓存数据。请参与图5,是本发明第二实施例的实时更新缓存的系统的结构示意图。本发明第二实施例的实时更新缓存的系统包括移动终端、Web服务器、缓存服务器、数据库和资源管理服务器,资源管理服务器包括缓存更新模块,其中,移动终端用于用户向Web服务器提交关键字请求搜索结果;Web服务器用于接收移动终端提交的关键字搜索结果请求,并判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,则读取该搜索结果缓存并输出到移动终端用户;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,则通过数据库查询该关键字的搜索结果,将该关键字以及对应的搜索结果加入缓存列表中,并输出到移动终端用户;缓存服务器中包括缓存列表,该缓存列表用于缓存关键字以及该关键字所对应的搜索结果;数据库用于数据的存储和管理;资源管理服务器用于后台编辑人员进行资源编辑操作;缓存更新模块用于在资源记录有变化(增加、修改和删除)时,将新的资源记录加入数据库,并实时更新缓存服务器中缓存列表的缓存数据;缓存更新模块具体包括第一判断单元、资源搜索单元、第二判断单元、第三判断单元、第四判断单元和数据更新单元,其中第一判断单元用于判断资源记录是否发生变化,如果资源记录发生变化,通过数据更新单元将新的资源记录加入到数据库中;如果资源记录没有发生变化,结束本次缓存更新;其中,资源记录的变化包括增加、修改或/和删除。资源搜索单元用于通过搜索条件得出发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中;其中,搜索条件包括资源记录中的一个或多个字段, 如在音乐搜索中,搜索关键字“周杰伦”,服务器端会去匹配歌手名和歌曲名这二个字段。第二判断单元用于判断缓存服务器中是否存在缓存列表,如果存在缓存列表,通过第三判断单元遍历缓存列表;如果不存在缓存列表,结束本次缓存更新;第三判断单元用于遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中有缓存关键字,通过第四判断单元判断资源更新列表中是否包含该缓存关键字;如果缓存列表中没有缓存关键字,结束本次缓存更新;第四判断单元用于取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字,如果资源更新列表中包含该缓存关键字,通过数据更新单元重新搜索数据库;如果关键字更新列表中不包含该缓存关键字,则通过第三判断单元重新遍历缓存列表;其中,程序会判断变化的资源记录是否会影响到该关键字对应的搜索结果,如果资源更新列表中包含该缓存关键字,说明变化的资源记录会影响该关键字对应的搜索结果,则资源管理后台会做一个该关键字搜索请求,重新搜索数据表取得最新的搜索结果,再将该搜索结果替换原来缓存列表中的缓存数据;反之,如果资源更新列表中不包含该缓存关键字,则说明变化的资源记录不会影响该关键字对应的搜索结果;判断变化的资源记录是否会影响关键字搜索结果的具体判断方式为在搜索业务中,服务器端会根据搜索关键字去匹配资源记录中的一个或多个字段,如在音乐搜索中,用户提交“周杰伦”关键字搜索, 服务器端会用“周杰伦”这个关键字去匹配歌手名和歌曲名这二个字段,再将能匹配的资源记录检索出来提供给搜索用户。反过来,如果在资源管理后台中修改(或增加)了一条歌手名为“周杰伦”、歌曲名为“七里香”的资源记录,可以得知,受影响的关键字搜索结果至少有“周杰伦”和“七里香”这二个关键字。数据更新单元用于将新的资源记录加入数据库中,查询数据库重新搜索该缓存关键字对应的新的搜索结果,并删除缓存列表中该缓存关键字的缓存数据,将新的搜索结果加入到缓存列表中。本发明实时更新缓存的方法和系统通过在资源管理服务器中增加更新缓存功能, 当资源有变化(增加、修改和删除)时,程序会遍历缓存列表的关键字,判断变化的资源是否会影响到该关键字的搜索结果,如果会影响,则资源管理后台会重新搜索数据表取得最新的搜索结果,再将这个搜索结果替换原来在缓存列表中的缓存数据;本发明既可以保证新增加资源记录能得到实时的更新,又不需要采用一天过期的机制,减少了服务器端每一天都要对所有关键字重新在数据表中搜索花费的时间,提升用户的使用体验。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种实时更新缓存的方法,包括步骤a 在资源管理服务器增加更新缓存功能;步骤b 判断资源记录是否发生变化,如果资源记录发生变化,执行步骤c ;如果资源记录没有发生变化,结束本次缓存更新;步骤c 将新的资源记录加入数据库中,并实时更新缓存列表中的缓存数据。
2.根据权利要求1所述的实时更新缓存的方法,其特征在于,所述步骤c具体还包括 获取发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中。
3.根据权利要求2所述的实时更新缓存的方法,其特征在于,所述步骤c具体还包括 判断缓存服务器中是否存在缓存列表,如果存在缓存列表,则遍历缓存列表;如果不存在缓存列表,结束本次缓存更新。
4.根据权利要求3所述的实时更新缓存的方法,其特征在于,所述步骤c具体还包括 遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中没有缓存关键字,结束本次缓存更新;如果缓存列表中有缓存关键字,取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字。
5.根据权利要求4所述的实时更新缓存的方法,其特征在于,所述步骤c还包括如果资源更新列表中包含该缓存关键字,查询数据库重新搜索该缓存关键字对应的新的搜索结果,删除缓存列表中该缓存关键字的缓存数据,将新的搜索结果加入到缓存列表中;如果关键字更新列表中不包含该缓存关键字,则重新遍历缓存列表。
6.根据权利要求5所述的实时更新缓存的方法,其特征在于,在所述步骤c后还包括 接收用户的关键字搜索请求,判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,从缓存列表中读取该关键字对应的搜索结果并输出到移动终端用户;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,则通过查询数据库得到该关键字对应的搜索结果,并将该关键字以及对应的搜索结果加入缓存列表中,并输出到移动终端用户。
7.一种实时更新缓存的系统,包括缓存服务器、数据库和资源管理服务器,所述缓存服务器用于缓存关键字以及该关键字所对应的搜索结果;所述资源管理服务器用于进行资源编辑操作,其特征在于,所述资源管理服务器还包括缓存更新模块,所述缓存更新模块包括第一判断单元和数据更新单元,所述第一判断单元用于判断资源记录是否发生变化,如果资源记录发生变化,通过数据更新单元更新缓存数据;如果资源记录没有发生变化,结束本次缓存更新;所述数据更新单元用于将新的资源记录加入数据库中,并实时更新缓存列表中的缓存数据。
8.根据权利要求7所述的实时更新缓存的系统,其特征在于,所述实时更新缓存的系统还包括移动终端和web服务器,所述移动终端用于向Web服务器提交关键字请求搜索结果;所述Web服务器用于接收移动终端提交的关键字搜索结果请求,并返回搜索结果给移动终端。
9.根据权利要求7或8所述的实时更新缓存的系统,其特征在于,所述缓存更新模块还包括资源搜索单元,所述资源搜索单元用于通过搜索条件得出发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中。
10.根据权利要求9所述的实时更新缓存的系统,其特征在于,所述缓存更新模块还包括第二判断单元、第三判断单元和第四判断单元,所述第二判断单元用于判断缓存服务器中是否存在缓存列表,如果存在缓存列表,通过第三判断单元遍历缓存列表;如果不存在缓存列表,结束本次缓存更新;所述第三判断单元用于遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中有缓存关键字,通过第四判断单元判断资源更新列表中是否包含该缓存关键字;如果缓存列表中没有缓存关键字,结束本次缓存更新;所述第四判断单元用于取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字,如果资源更新列表中包含该缓存关键字,通过数据更新单元重新搜索数据库;如果关键字更新列表中不包含该缓存关键字,则通过第三判断单元重新遍历缓存列表。
全文摘要
本发明属于搜索技术领域,尤其涉及一种实时更新缓存的方法和系统。本发明实时更新缓存的方法包括步骤a在资源管理服务器增加一个更新缓存功能;步骤b判断资源记录是否发生变化,如果资源记录发生变化,执行步骤c;如果资源记录没有发生变化,结束本次缓存更新;步骤c将新的资源记录加入数据库中,并实时更新缓存列表中的缓存数据。本发明的技术方案既可以保证发生变化的资源记录能得到实时的更新,又不需要采用一天过期的机制,减少了服务器端每一天都要对所有关键字重新在数据库中搜索花费的时间,提升用户的使用体验。
文档编号G06F17/30GK102279880SQ20111021388
公开日2011年12月14日 申请日期2011年7月28日 优先权日2011年7月28日
发明者鲁林 申请人:深圳市五巨科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1