基于数据缓存的读数据方法及装置制造方法及图纸

技术编号:8271455 阅读:176 留言:0更新日期:2013-01-31 03:41
本发明专利技术公开了一种基于数据缓存的读数据方法及装置。接收用户用于获取数据输入的读访问请求信息,抽取生成关键词;确定缓存数据库中未缓存生成的关键词对应的数据键值,初始化待获取数据的标志值;或者,确定缓存数据库中缓存有生成的关键词对应的数据键值,但缓存的数据键值中包含的数据失效,设定待获取数据的标志值为获得的数据键值中包含的标志值;读数据库从库,查询得到生成的关键词对应的数据;获取读数据库从库的时间戳信息,根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息,并更新缓存数据库;将查询得到的数据输出。应用本发明专利技术,可以提升数据的缓存效率,优化数据缓存的综合性能。

【技术实现步骤摘要】
本专利技术涉及缓存数据库技术,尤其涉及一种基于数据缓存的读数据方法。
技术介绍
在当今的信息社会,数据库技术及软件已广泛应用到各企业单位。例如,银行系统、税务系统、售票系统、财务系统、人事系统等,在web时代,管理诸如用户信息、商品信息、社交信息等浩如烟海的技术资料,缓存数据库技术是目前唯一可行的方案。然而,当包含技术资料的数据库中的数据量以T、P为单位计算时,磁盘10,即应用程序访问物理数据源成为数据库访问效率不可逾越的鸿沟。一方面,需要使用数据库来存储大数据量的技术资料;另一方面,低效的磁盘IO操作限制了数据库的高效运行。 为了提高数据库的运行效率,现有技术提出了数据缓存技术。缓存数据介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,由于缓存的介质一般是内存,因而,其读写速度较快,从而提高应用的运行性能。使用缓存不可避免地带来了两个技术问题,一是缓存中的数据与物理数据的一致性;二是缓存数据的时效性(有效期)。特别是目前大型数据库普遍采用集群方式存储数据,并且采用数据库主库以及数据库从库,对数据写操作和数据读操作进行分离,使得缓存数据与物理数据的交互,与单台主机上的内存与磁盘数据交互相比,变得更加复杂和多样,数据同步性和时效性问题也变得更加突出。目前,基于键值(key-value)对的缓存数据库技术有很多,例如,分布式缓存系统(Memcached)、key-value 存储系统(Redis, Remote Dictionary Server)等,实现了缓存数据的高效访问,然而,对于缓存数据的时效性和一致性,全部依赖于数据库运营者预先制定的策略。传统的策略,是在更新数据库主库的同时,使缓存数据库中缓存的数据无效化;接着从数据库从库读取数据,并将读取的数据写入缓存数据库,例如,在Memcached中更新缓存数据;在更新缓存数据的同时,根据服务器(Memcached)负载,固定设定缓存数据有效时间,如24小时等。然而,一旦数据库读写访问频繁,由于数据库主库与数据库从库不能进行实时同步更新,将导致数据库主库与数据库从库不一致现象会经常发生,并且不一致的时间由于高度依赖于服务器负载(设定的缓存数据有效时间)而不可测,使得缓存数据与数据库中物理数据不一致的现象经常发生;进一步地,在缓存数据的有效期内,或者下一次对数据库主库中不一致的数据进行写访问之前,用户通过缓存机制访问缓存数据库得到的数据与数据库主库中写入的数据是不一致的,一致性较差;而如果将缓存数据失效时间设定的较短,虽然可以提高数据一致性,但由于缓存数据库中数据频繁失效,从而带来缓存命中率降低,影响缓存的效率。因而,如何在数据一致性、时效性和缓存高效率之间取得较好的平衡,是一个亟待解决的问题
技术实现思路
本专利技术的实施例提供一种基于数据缓存的读数据方法,提升数据的缓存效率,优化数据缓存的综合性能。本专利技术的实施例还提供一种基于数据缓存的读数据装置,提升数据的缓存效率,优化数据缓存的综合性能。为达到上述目的,本专利技术实施例提供的一种基于数据缓存的读数据方法,包括接收用户用于获取数据输入的读访问请求信息,抽取读访问请求信息,生成关键词;查询缓存数据库,确定缓存数据库中未缓存生成的关键词对应的数据键值,初始 化待获取数据的标志值;或者,确定缓存数据库中缓存有生成的关键词对应的数据键值,但缓存的数据键值中包含的数据失效,设定待获取数据的标志值为获得的数据键值中包含的标志值;读数据库从库,查询得到生成的关键词对应的数据;获取读数据库从库的时间戳信息,根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息,并更新缓存数据库;将查询得到的数据输出。其中,在所述接收用户用于获取数据输入的读访问请求信息之前,进一步包括获取用户写入的数据信息,抽取用户写入的数据信息,生成对应的关键词;查询缓存数据库,查找是否存在生成的关键词对应的数据键值,如果存在该数据键值,将缓存数据库中缓存的该数据删除;如果不存在该数据键值,根据生成的关键词以及用户写入的数据信息,生成关键词-数据键值对,并写入数据库主库。其中,缓存数据库中,以关键词-数据键值存储数据,所述数据键值包含时间戳、标志以及数据。其中,所述初始化待获取数据的标志值包括设定待获取数据的标志值为O。其中,所述缓存的数据键值中包含的数据失效包括解析查询得到的数据键值,获得数据键值中包含的时间戳信息,判断解析时的当前时间戳与获得的时间戳,如果当前时间戳大于获得的时间戳,确定该数据键值中包含的数据失效。其中,进一步包括如果当前时间戳小于或等于获得的时间戳,将查询得到的数据键值中包含的数据作为待获取数据输出。其中,所述根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息包括将待获取数据作为数据键值信息中的数据;将设置的待获取数据的标志加1,作为数据键值信息中的标志;根据数据键值信息中的标志、读数据库从库的时间戳信息以及预先设置的时间戳值计算公式,计算更新的缓存数据有效时间,作为数据键值信息中的时间戳。其中,所述时间戳值计算公式为 time=time2+ α χ ηflag式中,time为更新的缓存数据有效时间;time2为读数据库从库的时间戳;α为数据基准有效时间;η为基准扩展值;flag'为更新数据的标志; flag' =flag+1 ;flag为待获取数据的标志。其中,所述在将缓存数据库中缓存的该数据删除后,或,写入数据库主库后,进一步包括向用户返回写入成功信息。其中,进一步包括如果查询数据库从库,不存在与生成的关键词对应的数据,向用户返回读数据失败信息。一种基于数据缓存的读数据装置,该装置包括读数据模块、缓存数据库模块以及数据库从库模块,其中,读数据模块,用于接收用户用于获取数据输入的读访问请求信息,抽取读访问请求信息,生成关键词;缓存数据库模块,用于根据读数据模块生成的关键词进行查询,确定缓存数据库中未缓存生成的关键词对应的数据键值,初始化待获取数据的标志值;或者,确定缓存数据库中缓存有生成的关键词对应的数据键值,但缓存的数据键值中包含的数据失效,设定待获取数据的标志值为获得的数据键值中包含的标志值;数据库从库模块,用于读数据库从库,查询得到生成的关键词对应的数据,将查询得到的数据输出;获取读数据库从库的时间戳信息,根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息,并更新缓存数据库。所述缓存数据库模块包括查询单元、判断单元、初始化单元以及数据键值处理单元,其中,查询单元,用于根据读数据模块生成的关键词进行查询;判断单元,判断查询单元是否查询到生成的关键词对应的数据键值,如果是,将查询得到的数据键值输出至数据键值处理单元;否则,向初始化单元输出触发信息;初始化单元,用于根据接收的触发信息,初始化待获取数据的标志值,向数据库从库丰吴块输出;数据键值处理单元,用于解析查询得到的数据键值,获得数据键值中包含的时间戳信息,判断解析时的当前时间戳与获得的时间戳,如果当前时间戳小于或等于获得的时间戳,将查询得到的数据键值中包含的数据作为待获取数据输出;如果当前时间戳大于获得的时间戳,设定待获取数据的标本文档来自技高网
...

【技术保护点】
一种基于数据缓存的读数据方法,该方法包括:接收用户用于获取数据输入的读访问请求信息,抽取读访问请求信息,生成关键词;查询缓存数据库,确定缓存数据库中未缓存生成的关键词对应的数据键值,初始化待获取数据的标志值;或者,确定缓存数据库中缓存有生成的关键词对应的数据键值,但缓存的数据键值中包含的数据失效,设定待获取数据的标志值为获得的数据键值中包含的标志值;读数据库从库,查询得到生成的关键词对应的数据;获取读数据库从库的时间戳信息,根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息,并更新缓存数据库;将查询得到的数据输出。

【技术特征摘要】
1.一种基于数据缓存的读数据方法,该方法包括接收用户用于获取数据输入的读访问请求信息,抽取读访问请求信息,生成关键词;查询缓存数据库,确定缓存数据库中未缓存生成的关键词对应的数据键值,初始化待获取数据的标志值;或者,确定缓存数据库中缓存有生成的关键词对应的数据键值,但缓存的数据键值中包含的数据失效,设定待获取数据的标志值为获得的数据键值中包含的标志值; 读数据库从库,查询得到生成的关键词对应的数据; 获取读数据库从库的时间戳信息,根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息,并更新缓存数据库; 将查询得到的数据输出。2.根据权利要求I所述的方法,其中,在所述接收用户用于获取数据输入的读访问请求信息之前,进一步包括 获取用户写入的数据信息,抽取用户写入的数据信息,生成对应的关键词; 查询缓存数据库,查找是否存在生成的关键词对应的数据键值,如果存在该数据键值,将缓存数据库中缓存的该数据删除;如果不存在该数据键值,根据生成的关键词以及用户写入的数据信息,生成关键词-数据键值对,并写入数据库主库。3.根据权利要求I或2所述的方法,其中,缓存数据库中,以关键词-数据键值存储数据,所述数据键值包含时间戳、标志以及数据。4.根据权利要求3所述的方法,其中,所述初始化待获取数据的标志值包括 设定待获取数据的标志值为O。5.根据权利要求4所述的方法,其中,所述缓存的数据键值中包含的数据失效包括 解析查询得到的数据键值,获得数据键值中包含的时间戳信息,判断解析时的当前时间戳与获得的时间戳,如果当前时间戳大于获得的时间戳,确定该数据键值中包含的数据失效。6.根据权利要求5所述的方法,其中,进一步包括 如果当前时间戳小于或等于获得的时间戳,将查询得到的数据键值中包含的数据作为待获取数据输出。7.根据权利要求5所述的方法,其中,所述根据设置的待获取数据的标志、读数据库从库的时间戳信息以及待获取数据,设置键值对的数据键值信息包括 将待获取数据作为数据键值信息中的数据; 将设置的待获取数据的标志加1,作为数据键值信息中的标志; 根据数据键值信息中的标志、读数据库从库的时间戳信息以及预先设置的时间戳值计算公式,计算更新的缓存数据有效时间,作为数据键值信息中的时间戳。8.根据权利要求7所述的方法,其中,所述时间戳值计算公式为time=time2+a χ η 38 式中, time为更新的缓存数据有效时间; time2为读数据库从库的时间戳; a为数据基准有效时间;η为基准扩展值; flag'为更新数据的标志;flag' =flag+1 ; flag为待获取数据的标志。9.根据权利要求I或2所述的方法,其中,所述在将缓存数据库中缓存的该数据删除后,或,写入数据库主库后,进一步包括向用户返回写入成功信息。10.根据权利要求I或2所述的方法,其中,进一步包括 如果查询数据库从库,不存在与生成的关键词对应的数据,向用户返回读数据失败信肩、O11.一种基于数据缓存的读数据装置,其特征在于,该装置包括读数据模块、缓存数据库模块以及数据库从库模块,其中, 读数据模块,用于接收用户用于获取数据输入的读访问请求信息,抽取读访问请求信息,生成关键词; 缓存数据库模块,用于根据读数据模...

【专利技术属性】
技术研发人员:全宗峰
申请(专利权)人:新浪网技术中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1