发明内容
本发明提供了一种实时更新缓存的方法和系统,旨在解决的现有技术中由于缓存数据得不到实时更新影响用户使用体验的问题。
本发明是这样实现的,
一种实时更新缓存的方法,包括
步骤a:将搜索关键字及对应的搜索结果缓存在缓存列表中,在资源管理服务器增加更新缓存功能;
步骤b:判断资源记录是否发生变化,如果资源记录发生变化,执行步骤c;如果资源记录没有发生变化,结束本次缓存更新;
步骤c:将新的资源记录加入数据库中,根据发生变化的资源记录对应的搜索关键字查询数据库重新搜索对应的搜索结果,并删除缓存列表中该关键字的缓存数据,将新的搜索结果加入到缓存列表中。
本发明的技术方案还包括:所述步骤c具体还包括:获取发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中。
本发明的技术方案还包括:所述步骤c具体还包括:判断缓存服务器中是否存在缓存列表,如果存在缓存列表,则遍历缓存列表;如果不存在缓存列表,结束本次缓存更新。
本发明的技术方案还包括:所述步骤c具体还包括:遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中没有缓存关键字,结束本次缓存更新;如果缓存列表中有缓存关键字,取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字。
本发明的技术方案还包括:所述步骤c还包括:如果资源更新列表中包含该缓存关键字,查询数据库重新搜索该缓存关键字对应的新的搜索结果,删除缓存列表中该缓存关键字的缓存数据,将新的搜索结果加入到缓存列表中;如果关键字更新列表中不包含该缓存关键字,则重新遍历缓存列表。
本发明的技术方案还包括:在所述步骤c后还包括:接收用户的关键字搜索请求,判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,从缓存列表中读取该关键字对应的搜索结果并输出到移动终端用户;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,则通过查询数据库得到该关键字对应的搜索结果,并将该关键字以及对应的搜索结果加入缓存列表中,并输出到移动终端用户。
本发明采取的另一技术方案为:一种实时更新缓存的系统,包括缓存服务器、数据库和资源管理服务器,所述缓存服务器用于缓存关键字以及该关键字所对应的搜索结果;所述资源管理服务器用于进行资源编辑操作,所述资源管理服务器还包括缓存更新模块,所述缓存更新模块包括第一判断单元和数据更新单元,
所述第一判断单元用于判断资源记录是否发生变化,如果资源记录发生变化,通过数据更新单元更新缓存数据;如果资源记录没有发生变化,结束本次缓存更新;
所述数据更新单元用于将新的资源记录加入数据库中,根据发生变化的资源记录对应的搜索关键字查询数据库重新搜索对应的搜索结果,并删除缓存列表中该关键字的缓存数据,将新的搜索结果加入到缓存列表中。
本发明的技术方案还包括:所述实时更新缓存的系统还包括移动终端和web服务器,所述移动终端用于向Web服务器提交关键字请求搜索结果;所述Web服务器用于接收移动终端提交的关键字搜索结果请求,并返回搜索结果给移动终端。
本发明的技术方案还包括:所述缓存更新模块还包括资源搜索单元,所述资源搜索单元用于通过搜索条件得出发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中。
本发明的技术方案还包括:所述缓存更新模块还包括第二判断单元、第三判断单元和第四判断单元,
所述第二判断单元用于判断缓存服务器中是否存在缓存列表,如果存在缓存列表,通过第三判断单元遍历缓存列表;如果不存在缓存列表,结束本次缓存更新;
所述第三判断单元用于遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中有缓存关键字,通过第四判断单元判断资源更新列表中是否包含该缓存关键字;如果缓存列表中没有缓存关键字,结束本次缓存更新;
所述第四判断单元用于取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字,如果资源更新列表中包含该缓存关键字,通过数据更新单元重新搜索数据库;如果关键字更新列表中不包含该缓存关键字,则通过第三判断单元重新遍历缓存列表。
本发明的技术方案具有如下优点或有益效果:本发明实时更新缓存的方法和系统通过在资源管理服务器中增加更新缓存功能,当资源有变化时,程序会判断变化的资源是否会影响到缓存列表中关键字的搜索结果,如果会影响,则资源管理后台会重新搜索数据库取得最新的搜索结果,并替换原来在缓存列表中的缓存数据;本发明既可以保证发生变化的资源记录能得到实时的更新,又不需要采用一天过期的机制,减少了服务器端每一天都要对所有关键字重新在数据库中搜索花费的时间,提升用户的使用体验。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,是本发明第一实施例的实时更新缓存的方法的流程图。本发明第一实施例的实时更新缓存的方法包括以下步骤:
步骤100:在资源管理服务器增加一个更新缓存功能;
在步骤100中,资源管理服务器用于后台编辑人员进行资源编辑操作,现有的资源管理服务器只能做资源记录的增加、修改和删除操作,本发明则在资源管理服务器中增加一个更新缓存功能,该更新缓存功能在判断到资源记录有变化(增加、修改和删除)时,会实时更新缓存服务器中缓存列表的缓存数据;其中,缓存列表用于缓存关键字以及该关键字所对应的搜索结果。
步骤110:当资源有变化时,遍历缓存列表的关键字,判断变化的资源是否会影响到该关键字的搜索结果,如果影响到该关键字的搜索结果,执行步骤120;如果没有影响到该关键字的搜索结果,执行步骤130;
在步骤110中,资源的变化包括增加、修改或/和删除等操作。
步骤120:进行该关键字的搜索请求,从数据表中取得最新的搜索结果,然后将这个搜索结果替换原来在缓存列表中的缓存数据;
步骤130:结束本次缓存更新。
请参阅图2,是本发明实时更新缓存的方法的用户请求关键字搜索结果的过程的流程图。是本发明实时更新缓存的方法的用户请求关键字搜索结果的过程的包括以下步骤:
步骤200:通过移动终端提交关键字请求搜索结果;
步骤210:接收该关键字搜索结果请求;
步骤220:判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,执行步骤230;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,执行步骤240;
其中,缓存列表用于缓存关键字以及该关键字所对应的搜索结果。
步骤230:从缓存列表中读取该关键字对应的搜索结果,并执行步骤250;
步骤240:通过查询数据库得到该关键字对应的搜索结果,并将该关键字以及对应的搜索结果加入缓存列表中;
步骤250:将该关键字搜索结果输出到移动终端用户;
步骤260:结束本次请求。
请参阅图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服务器用于接收移动终端提交的关键字搜索结果请求,并判断缓存服务器的缓存列表中是否存在该关键字以及对应的搜索结果缓存,如果缓存列表中存在该关键字以及对应的搜索结果缓存,则读取该搜索结果缓存并输出到移动终端用户;如果缓存列表中不存在该关键字以及对应的搜索结果缓存,则通过数据库查询该关键字的搜索结果,将该关键字以及对应的搜索结果加入缓存列表中,并输出到移动终端用户;
缓存服务器中包括缓存列表,该缓存列表用于缓存关键字以及该关键字所对应的搜索结果;
数据库用于数据的存储和管理;
资源管理服务器用于后台编辑人员进行资源编辑操作;
缓存更新模块用于在资源记录有变化(增加、修改和删除)时,将新的资源记录加入数据库,并实时更新缓存服务器中缓存列表的缓存数据;缓存更新模块具体包括第一判断单元、资源搜索单元、第二判断单元、第三判断单元、第四判断单元和数据更新单元,其中
第一判断单元用于判断资源记录是否发生变化,如果资源记录发生变化,通过数据更新单元将新的资源记录加入到数据库中;如果资源记录没有发生变化,结束本次缓存更新;其中,资源记录的变化包括增加、修改或/和删除。
资源搜索单元用于通过搜索条件得出发生变化的资源记录对应的搜索关键字,并将该搜索关键字加入资源更新列表中;其中,搜索条件包括资源记录中的一个或多个字段,如在音乐搜索中,搜索关键字“周杰伦”,服务器端会去匹配歌手名和歌曲名这二个字段。
第二判断单元用于判断缓存服务器中是否存在缓存列表,如果存在缓存列表,通过第三判断单元遍历缓存列表;如果不存在缓存列表,结束本次缓存更新;
第三判断单元用于遍历缓存列表,判断缓存列表中是否有缓存关键字,如果缓存列表中有缓存关键字,通过第四判断单元判断资源更新列表中是否包含该缓存关键字;如果缓存列表中没有缓存关键字,结束本次缓存更新;
第四判断单元用于取出一个缓存关键字,并判断资源更新列表中是否包含该缓存关键字,如果资源更新列表中包含该缓存关键字,通过数据更新单元重新搜索数据库;如果关键字更新列表中不包含该缓存关键字,则通过第三判断单元重新遍历缓存列表;
其中,程序会判断变化的资源记录是否会影响到该关键字对应的搜索结果,如果资源更新列表中包含该缓存关键字,说明变化的资源记录会影响该关键字对应的搜索结果,则资源管理后台会做一个该关键字搜索请求,重新搜索数据表取得最新的搜索结果,再将该搜索结果替换原来缓存列表中的缓存数据;反之,如果资源更新列表中不包含该缓存关键字,则说明变化的资源记录不会影响该关键字对应的搜索结果;判断变化的资源记录是否会影响关键字搜索结果的具体判断方式为:在搜索业务中,服务器端会根据搜索关键字去匹配资源记录中的一个或多个字段,如在音乐搜索中,用户提交“周杰伦”关键字搜索,服务器端会用“周杰伦”这个关键字去匹配歌手名和歌曲名这二个字段,再将能匹配的资源记录检索出来提供给搜索用户。反过来,如果在资源管理后台中修改(或增加)了一条歌手名为“周杰伦”、歌曲名为“七里香”的资源记录,可以得知,受影响的关键字搜索结果至少有“周杰伦”和“七里香”这二个关键字。
数据更新单元用于将新的资源记录加入数据库中,查询数据库重新搜索该缓存关键字对应的新的搜索结果,并删除缓存列表中该缓存关键字的缓存数据,将新的搜索结果加入到缓存列表中。
本发明实时更新缓存的方法和系统通过在资源管理服务器中增加更新缓存功能,当资源有变化(增加、修改和删除)时,程序会遍历缓存列表的关键字,判断变化的资源是否会影响到该关键字的搜索结果,如果会影响,则资源管理后台会重新搜索数据表取得最新的搜索结果,再将这个搜索结果替换原来在缓存列表中的缓存数据;本发明既可以保证新增加资源记录能得到实时的更新,又不需要采用一天过期的机制,减少了服务器端每一天都要对所有关键字重新在数据表中搜索花费的时间,提升用户的使用体验。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。