logo好方法网

一种无锁处理的读缓存方法


技术摘要:
本发明涉及一种无锁处理的读缓存方法,包括数据读取和数据写入,数据读取包括:开始读取数据;依次从快设备中读取一次数据、从慢设备中读取两次数据,并根据每次读取数据的成功与否,分别判断是否结束读取、是否将慢设备中第一次读取的数据插入快设备中、以及是否从快  全部
背景技术:
在执行业务系统的数据读写操作时,为了提升读取以及写入数据的性能,通常会 采用缓存系统,比如把最近访问的非结构化数据缓存至SSD(Solid  State  Disk,固态硬盘) 中,把最近访问的结构化数据缓存至内存中等。缓存可以分为读缓存和写缓存,其中,读缓 存是指将读取过的数据暂时保存在缓存区中,如果下次再次需要该数据时,可直接由缓存 区提供数据,从而加快读取速度。 比如在给数据库表中的记录进行内存读缓存时,传统的读缓存处理方法如图1所 示,其中,缓存中增加记录的流程如图1左侧所示,包括依次执行的A0、A1、A2、A3及A4步骤; 缓存中删除记录的流程如图1右侧所示,包括依次执行的B0、B1、B2及B3步骤。然而,一旦缓 存中增加记录和删除记录并发同时进行,即B1和B2步骤在A2和A3步骤之间执行(具体的执 行顺序为:A0、A1、A2、B0、B1、B2、B3、A3、A4)时,会大致出现内存中出现脏数据,即数据读取 之后发生了修改,并且修改后的数据直接覆盖了原始数据,这会导致读写数据不一致。 目前的解决方案为:在增加记录和删除记录的流程中各自加同一把锁,使得增加 记录时,不能执行删除操作;删除记录时,则不能执行增加操作。这种处理方式能够在一定 程度上保证数据的一致性,但是在并发访问时,尤其在读多写少的场景下,则存在明显的性 能缓慢问题,使得并发访问时读写速度慢、读写效率低。
技术实现要素:
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种无锁处理的读 缓存方法,利用快设备缓存慢设备的数据,以在读多写少场景下,提升并发访问时的读写性 能。 本发明的目的可以通过以下技术方案来实现:一种无锁处理的读缓存方法,包括 数据读取和数据写入,其中,所述数据读取具体包括以下步骤: R1、开始读取数据; R2、依次从快设备中读取一次数据、从慢设备中读取两次数据,并根据每次读取数 据的成功与否,分别判断是否执行步骤R5、是否将慢设备中第一次读取的数据插入快设备 中、以及是否从快设备中删除已插入的数据; R3、对慢设备中读取的两次数据进行比较,若慢设备中读取两次数据的比较结果 满足预设条件,则执行步骤R5,否则执行步骤R4; R4、从快设备中删除已插入的数据,之后执行步骤R5; R5、读取结束; 所述数据写入具体包括以下步骤: W1、开始写入数据; 4 CN 111581241 A 说 明 书 2/5 页 W2、将数据写入慢设备中; W3、从快设备中对应删除已写入慢设备中的数据; W4、写入结束。 进一步地,所述步骤R2具体包括以下步骤: R21、从快设备中读取所需数据,并判断此次读取是否成功,若成功读取则执行步 骤R5,否则执行步骤R22; R22、从慢设备中第一次读取所需数据,并判断此次读取是否成功,若成功读取则 获取该次读取数据的value值,之后执行步骤R23,否则执行步骤R5; R23、将慢设备第一次读取的数据插入快设备中; R24、从慢设备中第二次读取所需数据,并判断此次读取是否成功,若成功读取则 获取该次读取数据的value值,之后执行步骤R3,否则执行步骤R4。 进一步地,所述步骤R3具体包括以下步骤: R31、获取从慢设备中读取两次数据的value值,并对这两个value值进行比较; R32、若这两个value值的比较结果满足预设条件,则执行步骤R5,否则执行步骤 R4。 进一步地,所述步骤R32中预设条件具体为: value1=value2 其中,value1为从慢设备中第一次读取数据的value值,value2为从慢设备中第二 次读取数据的value值。 进一步地,所述数据写入方法可应用于三种场景:首次写入操作、更新操作以及删 除操作。 进一步地,当数据写入为更新操作时,对应的数据读写并发访问流程具体为:R1、 R21、R22、W1、W2、W3、W4、R23、R24、R31、R32、R4、R5,其中,快设备中的脏数据在步骤R4中被删 除。 进一步地,当数据写入为删除操作时,对应的数据读写并发访问流程具体为:R1、 R21、R22、W1、W2、W3、W4、R23、R4、R5,其中,快设备中的脏数据在步骤R4中被删除。 进一步地,当数据读写并发访问流程具体为:R1、R21、R22、R23、R24、W1、W2、W3、W4、 R5,其中,快设备中的脏数据在步骤W3中被删除。 进一步地,所述慢设备具体为HDD(Hard  Disk  Drive,硬盘驱动器)、SSD、远端服务 器或公有云数据库。 进一步地,所述快设备具体为SSD、内存、本地服务器或本地数据库。 与现有技术相比,本发明提出了一种无锁处理的读缓存方法,主要通过以下两点 来实现数据的读取和写入: 1、读取数据流程中,对将要插入快设备中的数据,分别从慢设备中进行两次读取, 通过对比两次读取数据所获取的value值是否相等,以判断是否要删除快设备中已插入的 数据; 2、写入数据流程中,针对首次写入、更新以及删除三种场景,无论是哪种写入场 景,在数据写入慢设备之后,均执行从快设备中删除数据的操作。 通过上述两点的设计,使快设备作为慢设备的数据缓存,在读多写少的场景下,读 5 CN 111581241 A 说 明 书 3/5 页 缓存流程均为无锁处理,能够可靠得删除数据修改所产生的脏数据,以保证数据的一致性, 同时有效提升并发访问时的读写性能。 附图说明 图1为现有技术中读缓存的方法流程示意图; 图2为本发明的方法流程示意图; 图3为实施例中数据读取流程示意图; 图4为实施例中数据写入流程示意图; 图5为实施例中以内存为缓存区的数据库读取流程示意图; 图6为实施例中以内存为缓存区的数据库写入流程示意图。
下载此资料需消耗2积分,
分享到:
收藏