CN106294205A - 缓存数据处理方法及装置 - Google Patents
缓存数据处理方法及装置 Download PDFInfo
- Publication number
- CN106294205A CN106294205A CN201510251489.4A CN201510251489A CN106294205A CN 106294205 A CN106294205 A CN 106294205A CN 201510251489 A CN201510251489 A CN 201510251489A CN 106294205 A CN106294205 A CN 106294205A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- cache table
- write
- mapping relations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种缓存数据处理方法及装置,该缓存数据处理方法包括:获取读数据请求;根据读数据请求获取待读取数据的名称,其中,缓存数据包括待读取数据;从映射关系中查找与待读取数据的名称对应的存储地址;以及根据待读取数据的名称对应的存储地址读取待读取数据。通过本发明,解决了相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题,进而达到了在保证线程不堵塞时提高读写缓存数据的效率的效果。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种缓存数据处理方法及装置。
背景技术
在计算机程序运行中,缓存机制被大量使用,正确使用缓存能大幅度提高程序的性能。在多线程运行的程序中,通常需要对缓存数据在多线程之间共享、在读写线程之间同步等问题进行协调。为了协调多个线程对缓存数据的读写,常用的技术方案有排他锁和写时复制(Copy On Write)两种,其中,排他锁是指使用一个锁表示线程对缓存数据的拥有权,线程读写缓存数据前先要获取这个锁,获得这个锁的线程即可以对缓存数据进行读写操作,其他线程则不能对该缓存数据进行操作,例如,独占锁、读写锁等。采用排他锁的方式协调多个线程对缓存数据的读写容易频繁阻塞线程,影响程序的并发能力。写时复制是指对缓存数据进行编辑操作前,先拷贝一份该缓存数据,并对拷贝的缓存数据进行编辑,后续的线程对拷贝的缓存数据进行操作。采用写时复制的方式协调多个线程对缓存数据的读写时,在缓存数据量多、缓存数据对象较大的情况下,频繁进行拷贝操作一方面效率较低,另一方面会消耗大量内存资源。
针对相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种缓存数据处理方法及装置,以解决相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种缓存数据处理方法。根据本发明的缓存数据处理方法包括:获取缓存表,其中,缓存表中存储有缓存数据的名称和缓存数据的存储地址之间的映射关系;从缓存表中读取映射关系;以及根据映射关系对缓存数据执行读写操作。
进一步地,根据映射关系对缓存数据执行读写操作包括:获取读数据请求;根据读数据请求获取待读取数据的名称,其中,缓存数据包括待读取数据;从映射关系中查找与待读取数据的名称对应的存储地址;以及根据待读取数据的名称对应的存储地址读取待读取数据。
进一步地,缓存表包括第一缓存表和第二缓存表,根据映射关系对缓存数据执行读写操作包括:获取写数据请求;根据写数据请求在缓存中生成待更新数据;获取待更新数据的存储地址;将第一缓存表中存储的缓存数据的名称和缓存数据的存储地址之间的映射关系复制至第二缓存表中;以及根据待更新数据的存储地址更新第二缓存表中存储的映射关系。
进一步地,写数据请求为多个写数据请求,获取写数据请求包括:分别获取多个写数据请求,根据写数据请求在缓存中生成待更新数据包括:判断多个写数据请求是否可合并,其中,在判断出多个写数据请求可合并时,对多个写数据请求进行合并,得到第一写数据请求;以及根据第一写数据请求在缓存中生成待更新数据。
进一步地,缓存表还存储有时间戳,时间戳用于表示缓存表的生成时间,当缓存表为多个缓存表时,从缓存表中读取映射关系包括:分别获取多个缓存表的时间戳,得到多个时间戳;获取多个时间戳中最晚的时间戳;以及从最晚的时间戳对应的缓存表中读取映射关系。
进一步地,缓存表还存储有标识符,标识符用于表示缓存表是否可读,其中,当标识符为第一值时,缓存表可读,当标识符为第二值时,缓存表不可读。
为了实现上述目的,根据本发明的另一方面,提供了一种缓存数据处理装置。根据本发明的缓存数据处理装置包括:获取单元,用于获取缓存表,其中,缓存表中存储有缓存数据的名称和缓存数据的存储地址之间的映射关系;读取单元,用于从缓存表中读取映射关系;以及读写单元,用于根据映射关系对缓存数据执行读写操作。
进一步地,读写单元包括:第一获取模块,用于获取读数据请求;第二获取模块,用于根据读数据请求获取待读取数据的名称,其中,缓存数据包括待读取数据;查找模块,用于从映射关系中查找与待读取数据的名称对应的存储地址;以及读模块,用于根据待读取数据的名称对应的存储地址读取待读取数据。
进一步地,缓存表包括第一缓存表和第二缓存表,读写单元包括:第三获取模块,用于获取写数据请求;生成模块,用于根据写数据请求在缓存中生成待更新数据;第四获取模块,用于获取待更新数据的存储地址;复制模块,用于将第一缓存表中存储的缓存数据的名称和缓存数据的存储地址之间的映射关系复制至第二缓存表中;以及更新模块,用于根据待更新数据的存储地址更新第二缓存表中存储的映射关系。
进一步地,缓存表还存储有时间戳,时间戳用于表示缓存表的生成时间,当缓存表为多个缓存表时,读取单元包括:第五获取模块,用于分别获取多个缓存表的时间戳,得到多个时间戳;第六获取模块,用于获取多个时间戳中最晚的时间戳;以及读取模块,用于从最晚的时间戳对应的缓存表中读取映射关系。
通过本发明,采用获取缓存表,其中,缓存表中存储有缓存数据的名称和缓存数据的存储地址之间的映射关系;从缓存表中读取映射关系;以及根据映射关系对缓存数据执行读写操作,解决了相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题,进而达到了在保证线程不堵塞时提高读写缓存数据的效率的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的缓存数据处理方法的流程图;
图2是根据本发明实施例的缓存数据更新的示意图;以及
图3是根据本发明实施例的缓存数据处理装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种缓存数据处理方法。图1是根据本发明实施例的缓存数据处理方法的流程图。
如图1所示,该缓存数据处理方法包括如下的步骤S101至步骤S103:
步骤S101:获取缓存表,其中,缓存表中存储有缓存数据的名称和缓存数据的存储地址之间的映射关系。
缓存表可以是链表、哈希表等,以引用的方式指向缓存数据,例如,在表1所示的缓存表中,Obj_1对应于0x001,Obj_2对应于0x002,通过存储地址0x001和0x002即可以找到Obj_1和Obj_2对应的缓存数据。需要说明的是,表1仅是本发明实施例的缓存表的一种可选地表示形式,此外,本发明实施例在每次对缓存数据进行更新后都生成新的缓存表,其中,新的缓存表中存储着更新后的缓存数据的名称和存储地址的映射关系。
表1缓存表
优选地,为了保证线程每次读写的是最新的缓存数据,本发明实施例的缓存表还存储有时间戳,时间戳用于表示缓存表的生成时间,当缓存表为多个缓存表时,从缓存表中读取映射关系包括:分别获取多个缓存表的时间戳,得到多个时间戳;获取多个时间戳中最晚的时间戳;以及从最晚的时间戳对应的缓存表中读取映射关系。
例如,当前系统中仅存在缓存表1和缓存表2,其中,缓存表1是在2015年03月03日12:00:00创建的,则缓存表1中存储的时间戳为20150303-12:00:00,缓存表2是在2015年03月03日12:01:00创建的,则缓存表2中存储的时间戳为20150303-12:01:00,根据时间戳可以直观地得到缓存表2的创建时间晚于缓存表1的创建时间,由此可知缓存表2对应于最新的缓存数据。由于读写线程在对缓存数据进行读写时,每次根据最晚的时间戳对应的缓存表中存储的映射关系来实现对缓存数据的读写,从而保证每次读写的都是最新的缓存数据。
步骤S102:从缓存表中读取映射关系。
步骤S103:根据映射关系对缓存数据执行读写操作。
本发明实施例通过缓存表实现多线程对缓存数据同时执行读写操作,具体地,当多个线程同时读取缓存数据时,多个线程可以同时读取缓存表中存储的映射关系来实现对缓存数据的读取,当多个线程同时读写缓存数据时,为了便于描述,将上一次被读写的缓存表称为原缓存表,将原缓存表中存储的映射关系拷贝至新生成的缓存表中,写线程基于新生成的缓存表实现对缓存数据的写操作,读线程继续根据原缓存表实现对缓存数据的读操作,从而实现同时读写缓存数据而不阻塞线程,此外,写操作时仅拷贝原缓存表中的映射关系,相比于现有技术中在写操作时拷贝整个缓存数据,数据量大大减少,提高了读写缓存数据的效率,而且能够减少内存资源的占用,解决了相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题。
可选地,根据映射关系对缓存数据执行读写操作包括:获取读数据请求;根据读数据请求获取待读取数据的名称,其中,缓存数据包括待读取数据;从映射关系中查找与待读取数据的名称对应的存储地址;以及根据待读取数据的名称对应的存储地址读取待读取数据。
当接收到读数据请求时,根据读数据请求可以得到待读取数据的名称,通常,在读数据请求中包含了待读取数据的名称。例如,在表1所示的缓存表中,当前需要读取名称为Obj_1的缓存数据时,则首先在读数据请求中获取该缓存数据的名称Obj_1,根据该缓存数据的名称Obj_1从缓存表中存储的映射关系中可以查询到该缓存数据的存储地址0x001,根据该缓存数据的存储地址0x001即可以读取到该缓存数据。需要说明的是,上述读数据请求可以是一个,也可以是多个。
优选地,为了提高对缓存数据进行更新的效率,缓存表包括第一缓存表和第二缓存表,根据映射关系对缓存数据执行读写操作包括:获取写数据请求;根据写数据请求在缓存中生成待更新数据;获取待更新数据的存储地址;将第一缓存表中存储的缓存数据的名称和缓存数据的存储地址之间的映射关系复制至第二缓存表中;以及根据待更新数据的存储地址更新第二缓存表中存储的映射关系。
为了保证在写线程对缓存数据进行更新操作时,读线程可以同时对缓存数据进行读操作,本发明实施例将第一缓存表中存储的映射关系拷贝至第二缓存表中,写线程基于第二缓存表对缓存数据进行更新操作,而读线程可以继续基于第一缓存表读取缓存数据。
具体地,在写数据请求中通常包含有待更新数据的名称,当需要向缓存中写入新的数据时,可以在写数据请求中包含待写入数据和待写入数据的名称,例如,待写入数据为mkj,待写入数据的名称为Obj_3,首先根据写数据请求可以获取到mkj和Obj_3,其次在缓存中新的位置处存储mkj,假设mkj在缓存中存储地址为0x003,获取mkj的存储地址0x003,最后将0x003和Obj_3更新至第二缓存表中存储的映射关系中,即在第二缓存表中存储的映射关系中增加Obj_3和0x003的映射关系。当需要变更某个缓存数据的值时,可以在写数据请求中包含待变更数据的名称和变更后取值,例如,缓存数据中待变更数据的名称为Obj_2,将其值由abc变更为edf时,首先根据写数据请求获取到Obj_2和edf,其次在缓存中新的位置处存储edf,假设edf在缓存中存储的地址为0x012,获取edf在缓存中存储的地址0x012,最后在第二缓存表中将Obj_2的映射地址替换为0x012。由于在对缓存数据进行更新操作时,是在缓存的新的位置存储更新的数据,而缓存中原先存储的数据并没有发生变化,因此,可以避免在写线程更新缓存数据时读线程因缓存数据丢失等出现异常。在写线程完成更新缓存数据后,后续的线程可以根据第二缓存表中存储的映射关系对缓存数据进行读写,从而保证对最新缓存数据进行读写。
优选地,为了避免大量的缓存表和已经被更新的缓存数据占用内存资源,在每次完成缓存数据更新后,自动释放内存中之前存储的缓存表和更新前的缓存数据以节省内存空间。
优选地,为了避免读线程因读取处于更新过程中的缓存数据导致线程异常,缓存表还存储有标识符,标识符用于表示缓存表是否可读,其中,当标识符为第一值时,缓存表可读,当标识符为第二值时,缓存表不可读。
标识符可以设为任意字符,例如,标识符设为state,当state为1时表示该缓存表可读,当state为0时表示该缓存表不可读,此时,读线程不可以对该缓存表执行读操作。通常,在缓存表更新过程中将其设置为不可读,在缓存表完成更新后再将其设置为可读,从而使得后续线程可以读取到最新的缓存数据。
优选地,为了进一步提高对缓存数据进行更新的效率,写数据请求为多个写数据请求,获取写数据请求包括:分别获取多个写数据请求,根据写数据请求在缓存中生成待更新数据包括:判断多个写数据请求是否可合并,其中,在判断出多个写数据请求可合并时,对多个写数据请求进行合并,得到第一写数据请求;以及根据第一写数据请求在缓存中生成待更新数据。
本发明实施例在获取多个写数据请求时,可以先分析多个写数据请求的关系,例如,多个写数据请求之间是否存在包含关系,是否可以进行合并等,如果分析出多个写数据请求可以合并,则对其进行合并,可以避免冗余的写数据请求,并减少数据更新的次数,从而可以提高缓存数据更新的效率。
图2是根据本发明实施例的缓存数据更新的示意图。如图2所示,缓存表1中存储的映射关系为{Obj_1:0x001,Obj_2:0x002,Obj_3:0x003,Obj_4:0x009,Obj_5:0x010},其中,Obj_1、Obj_2、Obj_3、Obj_4和Obj_5为缓存数据的名称,0x001、0x002、0x003、0x009和0x010为缓存数据的存储地址,时间戳为20150326-09:10:20。当在时刻20150326-10:03:30时写线程需要将缓存数据{Obj_2:0x002->abc}的值更新为mjk,即将Obj_2的值由abc更新为mjk,具体过程如下:
步骤S201:生成缓存表2,缓存表2的时间戳为20150326-10:03:30,并将缓存表2设置为不可读。
步骤S202:将缓存表1中的所有映射关系{Obj_1:0x001,Obj_2:0x002,Obj_3:0x003,Obj_4:0x009,Obj_5:0x010}拷贝到缓存表2中。
步骤S203:在缓存中重新创建Obj_2对应的缓存数据,例如,{Obj_2:0x102->mjk},即将Obj_2对应的缓存数据变更为mjk,将mjk存储于缓存0x102位置处。
步骤S204:在缓存表2中将Obj_2的映射地址替换成地址0x102,从而缓存表2中存储的映射关系更新为{Obj_1:0x001,Obj_2:0x102,Obj_3:0x003,Obj_4:0x009,Obj_5:0x010},同时将缓存表2设置为可读。
优选地,为了避免大量的缓存表和已经被更新的缓存数据占用内存资源,在每次完成缓存数据更新后,自动释放内存中之前存储的缓存表和更新前的缓存数据以节省内存空间。
需要说明的是,在步骤S201至步骤S204完成前,读线程读取的仍是缓存表1,在步骤S204完成后,后续的读线程读取到的是缓存表2,从而保证对最新缓存数据进行读操作。
本发明实施例提供的缓存数据处理方法在缓存数据对象比较大,需要支持多个线程同时读取缓存数据,缓存读取请求操作远多于缓存更新操作,以及读取缓存数据具有时间敏感性(即应该尽量短时间阻塞或者不阻塞数据读取线程)等情况下具有良好的应用前景,能够支持多线程同时读写缓存数据而不阻塞线程,其次,由于更新缓存数据时,只拷贝缓存数据的名称和存储地址的映射关系而不拷贝实际缓存数据,能够有效减少内存消耗,提高缓存数据更新效率,最后,本发明实施例可以实现批量更新缓存数据,即,可以启动一个独立的线程定时处理队列中的写数据请求,例如,对写数据请求进行合并等运算,减少冗余的写数据请求,从而减少缓存更新的次数。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例的另一方面,提供了一种缓存数据处理装置,该缓存数据处理装置可以用于执行本发明实施例的缓存数据处理方法,本发明实施例的缓存数据处理方法也可以通过本发明实施例的缓存数据处理装置来执行。
图3是根据本发明实施例的缓存数据处理装置的示意图,如图3所示,该装置包括:获取单元10、读取单元20和读写单元30。
获取单元10,用于获取缓存表,其中,缓存表中存储有缓存数据的名称和缓存数据的存储地址之间的映射关系。
读取单元20,用于从缓存表中读取映射关系。
优选地,为了保证线程每次读写的是最新的缓存数据,缓存表还存储有时间戳,时间戳用于表示缓存表的生成时间,当缓存表为多个缓存表时,读取单元20包括:第五获取模块,用于分别获取多个缓存表的时间戳,得到多个时间戳;第六获取模块,用于获取多个时间戳中最晚的时间戳;以及读取模块,用于从最晚的时间戳对应的缓存表中读取映射关系。
读写单元30,用于根据映射关系对缓存数据执行读写操作。
例如,当多个线程同时读取缓存数据时,多个线程可以同时读取缓存表中存储的映射关系来实现对缓存数据的读取,当多个线程同时读写缓存数据时,为了便于描述,将当前被读写的缓存表称为原缓存表,将原缓存表中存储的映射关系拷贝至新生成的缓存表中,写线程基于新生成的缓存表实现对缓存数据的写操作,读线程继续根据原缓存表实现对缓存数据的读操作,从而实现同时读写缓存数据而不阻塞线程,此外,写操作时仅拷贝原缓存表中的映射关系,相比于现有技术中在写操作时拷贝整个缓存数据,数据量大大减少,提高了读写缓存数据的效率,而且能够减少内存资源的占用,解决了相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题。
本发明实施例通过获取单元10获取缓存表,其中,缓存表中存储有缓存数据的名称和缓存数据的存储地址之间的映射关系;读取单元20从缓存表中读取映射关系;以及读写单元30根据映射关系对缓存数据执行读写操作,解决了相关技术中在实现多个线程读写缓存数据而不阻塞线程时效率较低的问题,进而达到了在保证线程不堵塞时提高读写缓存数据的效率的效果。
可选地,读写单元30包括:第一获取模块,用于获取读数据请求;第二获取模块,用于根据读数据请求获取待读取数据的名称,其中,缓存数据包括待读取数据;查找模块,用于从映射关系中查找与待读取数据的名称对应的存储地址;以及读模块,用于根据待读取数据的名称对应的存储地址读取待读取数据。
优选地,为了提高缓存数据更新的效率,缓存表包括第一缓存表和第二缓存表,读写单元30包括:第三获取模块,用于获取写数据请求;生成模块,用于根据写数据请求在缓存中生成待更新数据;第四获取模块,用于获取待更新数据的存储地址;复制模块,用于将第一缓存表中存储的缓存数据的名称和缓存数据的存储地址之间的映射关系复制至第二缓存表中;以及更新模块,用于根据待更新数据的存储地址更新第二缓存表中存储的映射关系。
具体地,本发明实施通过将第一缓存表中存储的映射关系拷贝至第二缓存表中,并基于第二缓存表对缓存数据进行更新操作,而读线程可以继续基于第一缓存表读取缓存数据,从而为了保证写线程对缓存数据进行更新操作时,读线程可以同时对缓存数据进行读操作。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种缓存数据处理方法,其特征在于,包括:
获取缓存表,其中,所述缓存表中存储有缓存数据的名称和所述缓存数据的存储地址之间的映射关系;
从所述缓存表中读取所述映射关系;以及
根据所述映射关系对所述缓存数据执行读写操作。
2.根据权利要求1所述的缓存数据处理方法,其特征在于,根据所述映射关系对所述缓存数据执行读写操作包括:
获取读数据请求;
根据所述读数据请求获取待读取数据的名称,其中,所述缓存数据包括所述待读取数据;
从所述映射关系中查找与所述待读取数据的名称对应的存储地址;以及
根据所述待读取数据的名称对应的存储地址读取所述待读取数据。
3.根据权利要求1所述的缓存数据处理方法,其特征在于,所述缓存表包括第一缓存表和第二缓存表,根据所述映射关系对所述缓存数据执行读写操作包括:
获取写数据请求;
根据所述写数据请求在缓存中生成待更新数据;
获取所述待更新数据的存储地址;
将所述第一缓存表中存储的所述缓存数据的名称和所述缓存数据的存储地址之间的映射关系复制至所述第二缓存表中;以及
根据所述待更新数据的存储地址更新所述第二缓存表中存储的所述映射关系。
4.根据权利要求3所述的缓存数据处理方法,其特征在于,所述写数据请求为多个写数据请求,
获取写数据请求包括:分别获取所述多个写数据请求,
根据所述写数据请求在缓存中生成待更新数据包括:
判断所述多个写数据请求是否可合并;
当判断出所述多个写数据请求可合并时,对所述多个写数据请求进行合并,得到第一写数据请求;以及
根据所述第一写数据请求在缓存中生成所述待更新数据。
5.根据权利要求1所述的缓存数据处理方法,其特征在于,所述缓存表还存储有时间戳,所述时间戳用于表示所述缓存表的生成时间,当所述缓存表为多个缓存表时,从所述缓存表中读取所述映射关系包括:
分别获取所述多个缓存表的时间戳,得到多个时间戳;
获取所述多个时间戳中最晚的时间戳;以及
从所述最晚的时间戳对应的缓存表中读取所述映射关系。
6.根据权利要求1所述的缓存数据处理方法,其特征在于,所述缓存表还存储有标识符,所述标识符用于表示所述缓存表是否可读,其中,当所述标识符为第一值时,所述缓存表可读,当所述标识符为第二值时,所述缓存表不可读。
7.一种缓存数据处理装置,其特征在于,包括:
获取单元,用于获取缓存表,其中,所述缓存表中存储有缓存数据的名称和所述缓存数据的存储地址之间的映射关系;
读取单元,用于从所述缓存表中读取所述映射关系;以及
读写单元,用于根据所述映射关系对所述缓存数据执行读写操作。
8.根据权利要求7所述的缓存数据处理装置,其特征在于,所述读写单元包括:
第一获取模块,用于获取读数据请求;
第二获取模块,用于根据所述读数据请求获取待读取数据的名称,其中,所述缓存数据包括所述待读取数据;
查找模块,用于从所述映射关系中查找与所述待读取数据的名称对应的存储地址;以及
读模块,用于根据所述待读取数据的名称对应的存储地址读取所述待读取数据。
9.根据权利要求7所述的缓存数据处理装置,其特征在于,所述缓存表包括第一缓存表和第二缓存表,所述读写单元包括:
第三获取模块,用于获取写数据请求;
生成模块,用于根据所述写数据请求在缓存中生成待更新数据;
第四获取模块,用于获取所述待更新数据的存储地址;
复制模块,用于将所述第一缓存表中存储的所述缓存数据的名称和所述缓存数据的存储地址之间的映射关系复制至所述第二缓存表中;以及
更新模块,用于根据所述待更新数据的存储地址更新所述第二缓存表中存储的所述映射关系。
10.根据权利要求7所述的缓存数据处理装置,其特征在于,所述缓存表还存储有时间戳,所述时间戳用于表示所述缓存表的生成时间,当所述缓存表为多个缓存表时,所述读取单元包括:
第五获取模块,用于分别获取所述多个缓存表的时间戳,得到多个时间戳;
第六获取模块,用于获取所述多个时间戳中最晚的时间戳;以及
读取模块,用于从所述最晚的时间戳对应的缓存表中读取所述映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510251489.4A CN106294205B (zh) | 2015-05-15 | 2015-05-15 | 缓存数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510251489.4A CN106294205B (zh) | 2015-05-15 | 2015-05-15 | 缓存数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294205A true CN106294205A (zh) | 2017-01-04 |
CN106294205B CN106294205B (zh) | 2019-12-10 |
Family
ID=57632303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510251489.4A Active CN106294205B (zh) | 2015-05-15 | 2015-05-15 | 缓存数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294205B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829743A (zh) * | 2018-05-24 | 2018-11-16 | 平安科技(深圳)有限公司 | 缓存数据更新方法、装置、计算机设备以及存储介质 |
CN109543080A (zh) * | 2018-12-04 | 2019-03-29 | 北京字节跳动网络技术有限公司 | 一种缓存数据处理方法、装置、电子设备及存储介质 |
CN110515740A (zh) * | 2019-08-16 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种数据读取方法、装置及设备 |
CN111857602A (zh) * | 2020-07-31 | 2020-10-30 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、数据节点及存储介质 |
CN113779082A (zh) * | 2021-01-05 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种更新数据的方法和装置 |
CN114721844A (zh) * | 2022-03-10 | 2022-07-08 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
CN116383250A (zh) * | 2023-03-07 | 2023-07-04 | 深圳市丰宜科技有限公司 | 一种生成缓存的方法、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131673A (zh) * | 2006-08-22 | 2008-02-27 | 中兴通讯股份有限公司 | 一种通用缓存的方法 |
CN102541757A (zh) * | 2011-11-30 | 2012-07-04 | 华为技术有限公司 | 写缓存方法、缓存同步方法和装置 |
CN103473314A (zh) * | 2013-09-11 | 2013-12-25 | 北京思特奇信息技术股份有限公司 | 一种基于共享内存的键值对存储方法及装置 |
CN103544077A (zh) * | 2012-07-17 | 2014-01-29 | 华为技术有限公司 | 数据处理方法及装置、共享存储设备 |
CN104536724A (zh) * | 2014-12-25 | 2015-04-22 | 华中科技大学 | 一种多核环境下哈希表并发访问性能优化方法 |
-
2015
- 2015-05-15 CN CN201510251489.4A patent/CN106294205B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131673A (zh) * | 2006-08-22 | 2008-02-27 | 中兴通讯股份有限公司 | 一种通用缓存的方法 |
CN102541757A (zh) * | 2011-11-30 | 2012-07-04 | 华为技术有限公司 | 写缓存方法、缓存同步方法和装置 |
CN103544077A (zh) * | 2012-07-17 | 2014-01-29 | 华为技术有限公司 | 数据处理方法及装置、共享存储设备 |
CN103473314A (zh) * | 2013-09-11 | 2013-12-25 | 北京思特奇信息技术股份有限公司 | 一种基于共享内存的键值对存储方法及装置 |
CN104536724A (zh) * | 2014-12-25 | 2015-04-22 | 华中科技大学 | 一种多核环境下哈希表并发访问性能优化方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829743A (zh) * | 2018-05-24 | 2018-11-16 | 平安科技(深圳)有限公司 | 缓存数据更新方法、装置、计算机设备以及存储介质 |
CN109543080A (zh) * | 2018-12-04 | 2019-03-29 | 北京字节跳动网络技术有限公司 | 一种缓存数据处理方法、装置、电子设备及存储介质 |
CN110515740A (zh) * | 2019-08-16 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种数据读取方法、装置及设备 |
CN111857602A (zh) * | 2020-07-31 | 2020-10-30 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、数据节点及存储介质 |
CN113779082A (zh) * | 2021-01-05 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 一种更新数据的方法和装置 |
CN114721844A (zh) * | 2022-03-10 | 2022-07-08 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
CN116383250A (zh) * | 2023-03-07 | 2023-07-04 | 深圳市丰宜科技有限公司 | 一种生成缓存的方法、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106294205B (zh) | 2019-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294205A (zh) | 缓存数据处理方法及装置 | |
US10831779B2 (en) | Seamless data migration across databases | |
US10262002B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
US9514211B2 (en) | High throughput data modifications using blind update operations | |
CN105404673B (zh) | 基于nvram的高效文件系统构建方法 | |
CN106021267B (zh) | 对数据结构的并发读取和插入的方法和系统 | |
US20200372004A1 (en) | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems | |
CN101765831B (zh) | 数据库不一致的处理方法 | |
CN102999522B (zh) | 一种数据存储方法和装置 | |
CN104881466B (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
AU2006200226A1 (en) | File system represented inside a database | |
CN102799679B (zh) | 基于Hadoop的海量空间数据索引更新系统及方法 | |
US8527559B2 (en) | Garbage collector with concurrent flipping without read barrier and without verifying copying | |
CN109690522B (zh) | 一种基于b+树索引的数据更新方法、装置及存储装置 | |
CN104750720A (zh) | 多线程并发访问环境下高性能数据处理的实现 | |
CN105069151A (zh) | HBase二级索引构建装置和方法 | |
CN104778077A (zh) | 基于随机和连续磁盘访问的高速核外图处理方法及系统 | |
CN101236564A (zh) | 一种海量数据高性能读取显示方法 | |
US9037539B2 (en) | Data synchronization | |
CN106293953B9 (zh) | 一种访问共享显示数据的方法及系统 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
US10552371B1 (en) | Data storage system with transparent presentation of file attributes during file system migration | |
CN107656992B (zh) | 面向多插入源的快照版本管理方法 | |
CN105117169B (zh) | 一种优化的磁盘空间管理的方法及装置 | |
CN109783243A (zh) | 一种基于正副本切换的多线程数据无锁读写方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |