用于缓存服务器的缓存管理方法及缓存管理系统技术方案

技术编号:9765738 阅读:112 留言:0更新日期:2014-03-15 10:24
本申请公开了一种用于缓存服务器的缓存管理方法及缓存管理系统,其中缓存管理方法包括:将缓存项数据写入缓存,根据设置的缓存项数据的失效时间和提前时间计算缓存项数据的下次预刷新时间的时间戳;将缓存项数据推送至消息队列中;根据缓存项数据的下次预刷新时间的时间戳,对消息队列中的缓存项数据进行异步缓存刷新操作。通过本申请能够有效保护后端数据源的安全。

【技术实现步骤摘要】
用于缓存服务器的缓存管理方法及缓存管理系统
本申请涉及通讯领域,尤其涉及一种用于缓存服务器的缓存管理方法及缓存管理系统。
技术介绍
目前,互联网已经发展为应用于各行业的、传送着海量多媒体及动态信息的全球网络。人们不仅可以通过互联网阅读到动态生成的信息,而且可以通过它使用电子商务、即时通信、网上游戏等交互性很强的服务。随着互联网不断扩大的规模,日益增长的用户群,对互联网网站建设提出了新的要求。对于门户网站来说,首要解决的问题就是速度的问题,当数据达到百万以上级别,同时又经常面临百万个用户经常访问的时候,系统的响应速度就会非常慢。缓存技术是提高门户网站的访问速度的关键技术。近年来,随着内存容量的飞速扩张和价格的下降,使用内存缓存开始成为一种可能。内存级别的缓存是指将需要动态生成的内容暂时缓存在内存里,在一个可接受的延迟时间范围内,同样的请求不再动态生成,而是直接从内存中读取。目前,在很多大型的web应用中,广泛使用memcache、redis等技术。如果在同一个进程中去读、写缓存的话,特别是value值比较大的时候,可能会消耗cpu资源;而且由于读、写是相互制约的,在缓存失效的瞬间,如果没有进行很好的处理,可能会对整个系统造成一定的冲击,造成“雪崩”效应。为解决上述问题,现有技术中的一种实现方案是为缓存层加上缓存锁,例如生成一个特殊标识的memcache缓存项等。但是,在给缓存层加上缓存锁的过程中,如果在大并发量的情况下,未生成新的缓存页面,在此期间访问的客户端就会直接访问后台设备,为后台设备带来极大的压力,并有可能导致系统崩溃。
技术实现思路
本申请的主要目的在于提供一种用于缓存服务器的缓存管理方法及缓存管理系统,以解决现有技术存在的缓存失效时大量并发操作可能导致系统崩溃的问题,其中:根据本申请实施例的用于缓存服务器的缓存管理方法包括:将缓存项数据写入缓存,根据设置的缓存项数据的失效时间和提前时间计算缓存项数据的下次预刷新时间的时间戳;将缓存项数据推送至消息队列中;根据缓存项数据的下次预刷新时间的时间戳,对消息队列中的缓存项数据进行异步缓存刷新操作。进一步地,该方法还包括:写缓存项数据时,设置缓存项数据的过期时间为不过期。进一步地,对缓存项数据进行异步缓存刷新操作的步骤,包括:创建独立的写进程,通过独立的写进程对缓存项数据进行异步缓存刷新操作。进一步地,消息队列中的缓存项数据根据其下次预刷新时间的时间戳进行排序。进一步地,根据消息队列中的缓存项数据的预刷新时间的时间戳,对缓存项数据进行异步缓存刷新操作的步骤,包括:获取消息队列中的预刷新时间的时间戳与当前时间戳一致的缓存项数据进行异步缓存刷新操作。进一步地,根据配置的缓存项数据的失效时间和提前时间计算缓存项数据的下次预刷新时间的步骤,包括:下次预刷新时间=失效时间-提前时间。进一步地,在对缓存项数据进行异步缓存刷新操作的步骤之后,该方法还包括:重新计算缓存项数据的下次预刷新时间戳,并推送至消息队列中。根据本申请实施例的存管理系统包括:计算模块,用于将缓存项数据写入缓存时,根据配置的缓存项数据的失效时间和提前时间计算缓存项数据的下次预刷新时间的时间戳;数据推送模块,用于将缓存项数据推送至消息队列中;刷新操作模块,用于根据缓存项数据的下次预刷新时间的时间戳,对消息队列中的缓存项数据进行异步缓存刷新操作。进一步地,该系统还包括:设置模块,用于在写缓存项数据时,设置缓存项数据的过期时间为不过期。进一步地,该系统还包括:创建模块,用于创建独立的写进程;刷新操作模块通过独立的写进程对缓存项数据进行异步缓存刷新操作。进一步地,消息队列中的缓存项数据根据其下次预刷新时间的时间戳进行排序。进一步地,刷新操作模块包括:获取子模块,用于获取消息队列中的预刷新时间的时间戳与当前时间戳一致的缓存项数据;写操作子模块,用于从数据源中获取对应的新数据,并写入对应的缓存项中。进一步地,计算模块通过以下公式计算缓存项数据的下次预刷新时间:下次预刷新时间=失效时间-提前时间。根据本申请的技术方案,通过采用读写分离的策略,在缓存失效前的一定时间异步地进行缓存内容的预写入,从而保证了缓存的高可用及其高命中率;同时,降低写操作对缓存层的压力,有效保护了后端数据源的安全。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的缓存管理方法的流程图;图2是根据本申请实施例的一个缓存管理系统的结构框图;图3是根据本申请实施例的另一缓存管理系统的结构框图。具体实施方式本申请应用于具有高并发的特点的大型Web应用(例如门户网站)。本申请通过采用读写分离的策略,在缓存失效前的一段时间内,异步地进行缓存内容的预写入,从而保证缓存的高可用及其高命中率;同时,降低写操作对缓存层的压力,保护后端数据源的安全。为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。根据本申请的实施例,提供了一种用于缓存服务器的缓存管理方法。图1是根据本申请实施例的用于缓存服务器的缓存管理方法的流程图,如图1所示,该方法包括(步骤S102-S106):步骤S102,将缓存项数据写入缓存,根据设置的缓存项数据的失效时间和提前时间计算该缓存项数据的下次预刷新时间。一般地,每个缓存项数据都设置有一个有效时间参数,有效时间可以以秒、小时或天为单位。数据的有效时间长短与数据变化特点相关,数据变化越快有效时间越短。在有效时间内,缓存项数据接受访问请求;当有效时间一过缓存项数据就会失效,同时后台程序会写一个新的缓存项数据供客户端访问。根据本申请,当从数据源(例如数据库)向缓存写缓存项数据时,将预设的失效时间提前一段时间作为缓存项数据的下次预刷新时间的时间戳,缓存项数据下次刷新时间将以新配置的时间为准。也就是说,经过上述处理,将缓存项数据的下次预刷新操作提前进行,在数据失效之前就进行缓存项数据的刷新操作。具体地,通过公式(1)计算该缓存项数据的下次预刷新时间。下次预刷新时间=失效时间-提前时间。公式(1)其中,下次预刷新时间可以是以分钟或秒为单位的时间长度。提前时间的长短可以根据实际情况进行设置,本申请对此不进行限制。同时,在写缓存项数据时,设置所述缓存项的过期时间为不过期。缓存项的过期时间是该缓存项的失效时间,当缓存项失效后会从缓存中移除该缓存项。导致在接收到来自用户的对于该数据的请求后,就转发请求到数据库,在高并发时造成对数据库很大的压力。根据本申请实施例,通过设置缓存项的过期时间为不过期,使得接收到用户的数据请求后始终访问缓存,从缓存中查询数据并返回给用户,不会直接访问后端数据源,减轻了后端数据源的负荷,有效保护了后端数据源的安全。步骤S104,将缓存项数据推送至消息队列中。消息队列中的缓存项至少携带有其下次预刷新时间以及一个key等信息,每个key对应一个具体的缓存实现类的全名。根据缓存项数据的下次预刷新时间的时间戳,对消息队列中的缓存项进行排序,下次预刷新时间较早的缓存项数据排在前面。由于不断地会有新的缓存项被推送到消息队列中,因此,需要循环检查消息队列中的缓存项的预刷本文档来自技高网...
用于缓存服务器的缓存管理方法及缓存管理系统

【技术保护点】
一种用于缓存服务器的缓存管理方法,其特征在于,包括:将缓存项数据写入缓存,根据设置的所述缓存项数据的失效时间和提前时间计算所述缓存项数据的下次预刷新时间的时间戳;将所述缓存项数据推送至消息队列中;根据缓存项数据的下次预刷新时间的时间戳,对所述消息队列中的缓存项数据进行异步缓存刷新操作。

【技术特征摘要】
1.一种用于缓存服务器的缓存管理方法,其特征在于,包括:将缓存项数据写入缓存,根据设置的所述缓存项数据的失效时间和提前时间计算所述缓存项数据的下次预刷新时间的时间戳;将所述缓存项数据推送至消息队列中,所述消息队列中的缓存项数据根据其下次预刷新时间的时间戳进行排序;根据缓存项数据的下次预刷新时间的时间戳,对所述消息队列中的缓存项数据进行异步缓存刷新操作。2.根据权利要求1所述的方法,其特征在于,还包括:写缓存项数据时,设置所述缓存项数据的过期时间为不过期。3.根据权利要求1所述的方法,其特征在于,所述对所述消息队列中的缓存项数据进行异步缓存刷新操作的步骤,包括:创建独立的写进程,通过所述独立的写进程对所述消息队列中的缓存项数据进行异步缓存刷新操作。4.根据权利要求1所述的方法,其特征在于,所述根据所述消息队列中的缓存项数据的预刷新时间的时间戳,对缓存项数据进行异步缓存刷新操作的步骤,包括:获取所述消息队列中的预刷新时间的时间戳与当前时间戳一致的缓存项数据进行异步缓存刷新操作。5.根据权利要求1所述的方法,其特征在于,所述根据配置的所述缓存项数据的失效时间和提前时间计算所述缓存项数据的下次预刷新时间的步骤,包括:下次预刷新时间=失效时间-提前时间。6.根据权利要求1所述的方法,其特征在于,在所述对所述消息队列中的缓存项数据进行异步...

【专利技术属性】
技术研发人员:林锦成
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1