一种高并发下Memcache数据的获取方法及系统技术方案

技术编号:15117854 阅读:48 留言:0更新日期:2017-04-09 15:00
本发明专利技术公开一种高并发下Memcache数据的获取方法及系统。其中,方法包括步骤:A、拼装第一关键字,并根据第一关键字获取版本号;B、将所述第一关键字和版本号组装第二关键字,根据第二关键字从Memcache服务器获取数据;C、判断是否获取到数据,若未获取到数据,则根据所述第一关键字获取锁;D、判断是否获取到锁,若未获取到锁,则连续多次、每次间隔一段时间执行步骤B以获取数据,若连续多次均未获取到数据,则将第一关键字对应的版本号减1,并根据第一关键字和减1后的版本号获取上一版版本的数据。本发明专利技术降低了访问数据库的压力,避免了大量并发请求同时访问数据库的情况会给系统带来潜在的超负荷风险。

【技术实现步骤摘要】

本专利技术涉及数据缓存领域,尤其涉及一种高并发下Memcache数据的获取方法。
技术介绍
Memcache是一套分布式的高速缓存系统,由LiveJournal的BradFitzpatrick开发,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。Memcache的工作原理如下:先检查客户端的请求数据是否在Memcache中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在Memcache中,则查找数据库,将从数据库中获取的数据返回给客户端,同时将数据缓存一份到Memcache中;每次更新数据库的同时需要更新Memcache中的数据,以保证数据的一致性;当分配给Memcache内存空间用完之后,会使用LRU(LeastRecentlyUsed,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。而在大并发的场合下,当大量并发请求同时获取不到Memcache中的数据时,会同一时间去访问数据库并将数据同时缓存一份到Memcache中,这种大量并发请求同时访问数据库的情况会给系统带来潜在的超负荷风险。因此,现有技术还有待于改进和发展。
技术实现思路
鉴于上述现有技术的不足,本专利技术的目的在于提供一种高并发下Memcache数据的获取方法及系统,旨在解决现有技术中高并发下容易造成系统超负荷的问题。本专利技术的技术方案如下:一种高并发下Memcache数据的获取方法,其中,包括步骤:A、拼装第一关键字,并根据第一关键字获取版本号;B、将所述第一关键字和版本号组装第二关键字,根据第二关键字从Memcache服务器获取数据;C、判断是否获取到数据,若未获取到数据,则根据所述第一关键字获取锁;D、判断是否获取到锁,若未获取到锁,则连续多次、每次间隔一段时间执行步骤B以获取数据,若连续多次均未获取到数据,则将第一关键字对应的版本号减1,并根据第一关键字和减1后的版本号获取上一版版本的数据。所述的高并发下Memcache数据的获取方法,其中,所述步骤D还包括:若获取到锁,则返回步骤B重新获取数据,若获取到数据则释放锁,若未获取到数据,则从数据库中获取数据并加载到Memcache服务器的缓存中。所述的高并发下Memcache数据的获取方法,其中,所述数据采用json格式的字符串进行存储,当获取到数据时,则将数据转换成json对象。所述的高并发下Memcache数据的获取方法,其中,还包括步骤:对Memcache服务器下的缓存进行缓存失效操作:将第一关键字对应的版本号加1,完成缓存失效操作。所述的高并发下Memcache数据的获取方法,其中,还包括缓存更新步骤:创建三个事务项:第一事务项、第二事务项和第三事务项;第一事务项由添加操作和缓存失效操作组成,第二事务项由更新操作和缓存失效操作组成,第三事务项由删除操作和缓存失效操作组成。所述的高并发下Memcache数据的获取方法,其中,各事物项的事务恢复策略如下:如果添加操作和缓存失效操作都执行成功,则提交第一事务项;如果添加操作成功,缓存失效操作失败,则删除添加的数据;如果添加操作失败,则缓存失效操作不执行;如果更新操作和缓存失效操作都执行成功,则提交第二事务项;如果更新操作成功,缓存失效操作失败,则恢复更新的数据;如果更新操作失败,则缓存失效操作不执行;如果删除操作和缓存失效操作都执行成功,则提交第三事务项;如果删除操作成功,缓存失效操作失败,则恢复删除的数据;如果删除操作失败,则缓存失效操作不执行。一种高并发下Memcache数据的获取系统,其中,包括:版本号获取模块,用于拼装第一关键字,并根据第一关键字获取版本号;第一获取模块,用于将所述第一关键字和版本号组装第二关键字,根据第二关键字从Memcache服务器获取数据;锁获取模块,用于判断是否获取到数据,若未获取到数据,则根据所述第一关键字获取锁;第二获取模块,用于判断是否获取到锁,若未获取到锁,则连续多次、每次间隔一段时间执行第一获取模块以获取数据,若连续多次均未获取到数据,则将第一关键字对应的版本号减1,并根据第一关键字和减1后的版本号获取上一版版本的数据。所述的高并发下Memcache数据的获取系统,其中,所述第二获取模块还包括:加载单元,用于若获取到锁,则返回第一获取模块重新获取数据,若获取到数据则释放锁,若未获取到数据,则从数据库中获取数据并加载到Memcache服务器的缓存中。所述的高并发下Memcache数据的获取系统,其中,还包括缓存失效模块,用于对Memcache服务器下的缓存进行缓存失效操作:将第一关键字对应的版本号加1,完成缓存失效操作。所述的高并发下Memcache数据的获取系统,其中,还包括:缓存更新模块,用于创建三个事务项:第一事务项、第二事务项和第三事务项;第一事务项由添加操作和缓存失效操作组成,第二事务项由更新操作和缓存失效操作组成,第三事务项由删除操作和缓存失效操作组成。有益效果:通过本专利技术,当客户端获取不到高版本的数据时,根据情况获得低版本的数据,从而避免了获取不到数据转而从数据库中获取的大量操作,降低了访问数据库的压力,避免了大量并发请求同时访问数据库的情况会给系统带来潜在的超负荷风险。附图说明图1为本专利技术一种高并发下Memcache数据的获取方法较佳实施例的流程图。图2为本专利技术的原理架构框图。图3为本专利技术一种高并发下Memcache数据的获取系统较佳实施例的结构框图。具体实施方式本专利技术提供一种高并发下Memcache数据的获取方法及系统,为使本专利技术的目的、技术方案及效果更加清楚、明确,以下对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。请参阅图1,图1为本专利技术一种高并发下Memcache数据的获取方法,其特征在于,包括步骤:S1、拼装第一关键字,并根据第一关键字获取版本号;S2、将所述第一关键字和版本号组装第二关键字,根据第二关键字从Memcache服务器获取数据;S3、判断是否获取到数据,若未获取到数据,则根据所述第一关键字获取锁;S4、判断是否获取到锁,若未获取到锁,则连续多次、每次间隔一段时间执行步骤S2以获取数据,若连续多次均未获取到数据,则将第一关键字对应的版本号减1,并根据第一关键字和减1后的版本号获取上一版版本的数据。本专利技术中,给Memcache服务器缓存中的数据增加了版本的属性,当客户端获取不到高版本的数据时,根据情况获得低版本的数据,从而避免了获取不到数据转而从数据库中获取的大量操作,降低了访问数据库的压力。本专利技术中,所述数据采用json格式的字符串进行存储,当获取到数据本文档来自技高网...

【技术保护点】
一种高并发下Memcache数据的获取方法,其特征在于,包括步骤:A、拼装第一关键字,并根据第一关键字获取版本号;B、将所述第一关键字和版本号组装第二关键字,根据第二关键字从Memcache服务器获取数据;C、判断是否获取到数据,若未获取到数据,则根据所述第一关键字获取锁;D、判断是否获取到锁,若未获取到锁,则连续多次、每次间隔一段时间执行步骤B以获取数据,若连续多次均未获取到数据,则将第一关键字对应的版本号减1得到新的版本号,并根据第一关键字和减1后的版本号获取上一版版本的数据。

【技术特征摘要】
1.一种高并发下Memcache数据的获取方法,其特征在于,包括步骤:
A、拼装第一关键字,并根据第一关键字获取版本号;
B、将所述第一关键字和版本号组装第二关键字,根据第二关键字从Memcache服务器获取数据;
C、判断是否获取到数据,若未获取到数据,则根据所述第一关键字获取锁;
D、判断是否获取到锁,若未获取到锁,则连续多次、每次间隔一段时间执行步骤B以获取数据,若连续多次均未获取到数据,则将第一关键字对应的版本号减1得到新的版本号,并根据第一关键字和减1后的版本号获取上一版版本的数据。
2.根据权利要求1所述的高并发下Memcache数据的获取方法,其特征在于,所述步骤D还包括:
若获取到锁,则返回步骤B重新获取数据,若获取到数据则释放锁,若未获取到数据,则从数据库中获取数据并加载到Memcache服务器的缓存中。
3.根据权利要求1所述的高并发下Memcache数据的获取方法,其特征在于,所述数据采用json格式的字符串进行存储,当获取到数据时,则将数据转换成json对象。
4.根据权利要求1所述的高并发下Memcache数据的获取方法,其特征在于,还包括步骤:对Memcache服务器下的缓存进行缓存失效操作:
将第一关键字对应的版本号加1,完成缓存失效操作。
5.根据权利要求1所述的高并发下Memcache数据的获取方法,其特征在于,还包括缓存更新步骤:创建三个事务项:第一事务项、第二事务项和第三事务项;第一事务项由添加操作和缓存失效操作组成,第二事务项由更新操作和缓存失效操作组成,第三事务项由删除操作和缓存失效操作组成。
6.根据权利要求5所述的高并发下Memcache数据的获取方法,其特征在于,各事物项的事务恢复策略如下:
如果添加操作和缓存失效操作都执行成功,则提交第一事务项;
如果添加操作成功,缓存失效操作失败,则删除添加的数据;
如果添加操作失败,则缓存失效操作不执行;

【专利技术属性】
技术研发人员:高保强
申请(专利权)人:TCL集团股份有限公司
类型:发明
国别省市:广东;44

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

1