CN110928935B - 数据的访问命令处理方法、装置和系统 - Google Patents
数据的访问命令处理方法、装置和系统 Download PDFInfo
- Publication number
- CN110928935B CN110928935B CN201811097483.6A CN201811097483A CN110928935B CN 110928935 B CN110928935 B CN 110928935B CN 201811097483 A CN201811097483 A CN 201811097483A CN 110928935 B CN110928935 B CN 110928935B
- Authority
- CN
- China
- Prior art keywords
- storage area
- access command
- preset storage
- key
- preset
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 59
- 230000008569 process Effects 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 16
- 230000006835 compression Effects 0.000 claims description 12
- 238000007906 compression Methods 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000003993 interaction Effects 0.000 description 6
- 230000002688 persistence Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 208000034941 Vasoproliferative tumor of the retina Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 208000016876 vasoproliferative tumor of retina Diseases 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据的访问命令处理方法、装置和系统。其中,该方法包括:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。本申请解决了相关技术中存储系统中数据的读写性能差的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种数据的访问命令处理方法、装置和系统。
背景技术
Redis数据库作为开源的纯内存Key-Value(键-值)数据库,以其高性能,丰富的数据类型和特性得到了广泛的应用。然而,高昂的内存价格限制了Redis数据库所能存储的数据量。为提高Redis数据库存储的数据量,用户需要支付额外的费用以购买大规格实例来保存数据,或者为Redis数据库搭配其他磁盘存储的数据库,并管理两个数据库之间的数据交互。
现有技术一般采用混合存储技术来解决上述问题。一种可选的方案是通过在RocksDB的基础上封装Redis数据库协议的网络层和服务层来实现数据的混合存储。但该方法无法与Redis数据库做到全面兼容,部分命令与Redis数据库的性能存在明显差距,并且数据在实时写入RocksDB的过程中,读写磁盘数据的负载较高。另外,由于计算机的内存中没有缓存所有的键,数据都保存在RocksDB中,因此,对数据的查询和访问性能与直接查询和访问Redis数据库中的数据存在较大差异。
另一种可选的方案是通过将不经常访问的冷数据的值存储到磁盘中,并将磁盘作为内存的扩展形式为提供Redis数据库服务。但该方案中,数据在内存和磁盘之间读写性能较差。
针对上述相关技术中存储系统中数据的读写性能差的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据的访问命令处理方法、装置和系统,以至少解决相关技术中存储系统中数据的读写性能差的技术问题。
根据本发明实施例的一个方面,提供了一种数据的访问命令处理方法,包括:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
根据本发明实施例的另一方面,还提供了一种数据的访问命令处理装置,包括:接收模块,用于通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;确定模块,用于根据访问命令待获取键值的存储位置确定访问命令的处理方式。
根据本发明实施例的另一方面,还提供了一种数据的访问命令处理系统,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以下步骤:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
根据本发明实施例的另一方面,还提供了一种计算设备,该包括处理器,该处理器用于运行程序,其中,程序运行时执行以下步骤:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
在本发明实施例中,采用混合存储技术存储数据的方式,通过主线程接收来自于客户端的访问命令,并根据访问命令待获取键值的存储位置确定访问命令的处理方式,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域。
在上述过程中,由于第一预设存储区域为基于内存的存储区域,因此,在接收到访问命令之后,服务器从内存中确定待获取键值的存储位置是内存还是磁盘,并根据待获取键值的不同存储位置对访问命令采取不同的处理方式,以最优的处理方式处理访问命令,从而达到了对不同存储区域的数据进行读写的目的,实现了提高数据读写性能的技术效果。
由此可见,本申请所提供的方案可以解决相关技术中存储系统中数据的读写性能差的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现数据的访问命令处理方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例的一种数据的访问命令处理方法的流程图;
图3是根据本申请实施例的一种可选的数据的访问命令处理方法的架构图;
图4是根据本申请实施例的一种可选的数据的访问命令处理方法的流程图;
图5是根据本申请实施例的一种可选的主线程与子线程的交互示意图;
图6是根据本申请实施例的一种可选的主线程与子线程的交互示意图;
图7是根据本申请实施例的一种数据的访问命令处理装置的结构示意图;以及
图8是根据本申请实施例的一种计算设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
Redis,指开源的Key-Value(键-值)的数据库,其可提供多种语言的应用程序编程接口(Application Programming Interface,简称API)。
RocksDB,指开源的持久化的Key-Value(键-值)数据库。
混合存储技术,指对数据进行拆分,并将拆分后的数据存储在多种存储介质中,以增加计算机存储性能的技术。例如,将闪存芯片嵌入至硬盘或者计算机主板中,结合硬盘和闪存芯片两者所长来增加计算机的存储性能。
RDB,Redis DataBase的缩写,指将某一时刻Redis数据库存储的数据生成快照并存储到磁盘等存储介质上的文件形式。
AOF,Append Only File的缩写,指记录Redis数据库执行过的所有写指令记录下来的文件形式,该文件形式仅允许数据追加文件但不可改写文件。
实施例1
根据本申请实施例,还提供了一种数据的访问命令处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现数据的访问命令处理方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据的访问命令处理方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据的访问命令处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在上述运行环境下,本申请提供了如图2所示的数据的访问命令处理方法,在本实施例中,执行数据的访问命令处理方法的执行主体可以为服务器。其中,图2是根据本申请实施例的数据的访问命令处理方法的流程图,由图2可知,该方法可以包括:
步骤S202,通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域。
需要说明的是,在本申请中的服务器中安装有Redis数据库,其中,第一预设存储区域可以为Redis数据库内存中的存储区域。另外,在步骤S202中的客户端可以为安装在与Redis数据库所在的同一服务器中的客户端,也可以为其他设备上的客户端。
在一种可选的方案中,图3示出了一种可选的数据的访问命令处理方法的架构图,由图3可知,本申请所提供的方案主要由两部分组成,即线程部分和存储部分。可选的,线程部分主要包括主线程和多个子线程(如图3中的子线程1至子线程N),主线程主要用于管理客户端发送的访问请求(即步骤S202中的访问命令)以及Redis数据库的业务逻辑,其中,Redis数据库的业务逻辑包括但不限于设置网络接口、设置白名单、管理账号权限以及事件循环的业务逻辑等;多个子线程用于将数据从外存中读取至内存中,并将内存中访问频率较低的数据从内存读取至外存中。其中,外存可以问但不限于服务器的本地磁盘、关系型数据库、KV数据库(即Key-Value数据库,键值数据库)以及用户自定义的存储结构等。另外,子线程可执行的任务包括但不限于读写任务、交换任务、加载任务等,并且每个子线程所执行的任务的顺序可以不同,如图3中,子线程1和子线程N所执行的任务的顺序不同。
另外,由图3可知,存储部分也包括两部分,即内存和外存,其中,内存(即上述第一预设存储区域)用于存储所有的数据的键,以及访问频率较高的数据;外存用于存储访问频率较低的数据以及数据对应的键。其中,内存和外存都采用键值对结构形式存储数据,例如,在内存中,HKEY为访问频率较高的数据对应的键,STRING/HASH/LIST/SET/ZSET为数据对应的数据格式,CKEY为访问频率较低的数据对应的键,VPTR为访问频率较低的数据对应的键对应的数值的地址。另外,还可将内存中访问频率较高的数据的键值与访问频率较低的数据的键值进行交换,或者将访问频率较低的数据的键值加载至访问频率较高的数据的键值对结构中。
需要说明的是,外存通过RockSDB与用户态文件系统相结合,整体提升读写性能,其中,用户态文件系统是一个实现在用户空间的文件系统框架,通过用户态文件系统的内核模块的支持,用户仅只需根据用户态文件系统提供的接口实现具体的文件操作即可实现一个文件系统。在本申请中,采用用户态文件系统可以减少进程在用户态和内核态空间的切换,优化后的读写路径比内核文件的读写路径更短,从而提高了外存数据的读写速率。
步骤S204,根据访问命令待获取键值的存储位置确定访问命令的处理方式。
需要说明的是,由于内存(即第一预设存储区域)中存储了所有数据的键,因此,服务器可根据键所指向的数据(即键值)所在的存储位置来确定对访问命令的处理方式。例如,在确定键所指向的数据存储在内存(即第一预设存储区域)的情况下,服务器可直接从Redis数据库的内存对数据进行读写;而当键所指向的数据存储在外存时,服务器可根据键所指向的外存中的地址对数据进行读写。
此外,还需要说明的是,由于内存中存储的是访问频率较高的数据,而外存中存储的是访问频率较低的数据,因此,根据键值的存储位置的不同来对不同存储区域内的数据进行处理,可以达到提高数据的读写效率的目的。
基于上述步骤S202至步骤S204所限定的方案,可以获知,采用混合存储技术存储数据的方式,通过主线程接收来自于客户端的访问命令,并根据访问命令待获取键值的存储位置确定访问命令的处理方式,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域。
在上述过程中,由于第一预设存储区域为基于内存的存储区域,因此,在接收到访问命令之后,服务器从内存中确定待获取键值的存储位置是内存还是磁盘,并根据待获取键值的不同存储位置对访问命令采取不同的处理方式,以最优的处理方式处理访问命令,从而达到了对不同存储区域的数据进行读写的目的,实现了提高数据读写性能的技术效果。
由此可见,本申请所提供的方案可以解决相关技术中存储系统中数据的读写性能差的技术问题。
在一种可选的方案中,如图4所示的一种可选的数据的访问命令处理方法的流程图,服务器在对访问命令进行处理之前,还需要执行如下步骤:
步骤S402,接收来自于客户端的访问指令;
步骤S404,根据访问指令判断所有的键是否全部存储在第一预设存储区域内,如果是,则执行步骤S406,否则,执行步骤S408;
步骤S406,响应访问指令;
步骤S408,排队等待读写操作。
需要说明的是,在确定了所有的键均存储在第一预设存储区域内之后,服务器进一步根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储的位置,并根据至少一个键对应的取值的存储位置来确定访问命令的处理方式。其中,至少一个键对应的取值的存储位置包括两个,即第一预设存储区域和第二预设存储区域。
可选的,在至少一个键对应的取值的存储位置为第一预设存储区域的情况下,服务器执行如下步骤:
步骤S40,根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在第一预设存储区域;
步骤S42,响应于访问命令,将至少一个键对应的取值返回至客户端。
可选的,在至少一个键对应的取值的存储位置为第二预设存储区域的情况下,服务器执行如下步骤:
步骤S50,根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在与第一预设存储区域关联的第二预设存储区域,其中,第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;
步骤S52,响应于访问命令,将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域,以便将至少一个键对应的取值返回至客户端。
需要说明的是,在步骤S50至步骤S51所限定的方案中,第二预设存储区域为外存,其中,第二预设存储区域可以为但不限于服务器的本地磁盘、关系型数据库、KV数据库(即Key-Value数据库,键值数据库)以及用户自定义的存储结构等。
在一种可选的方案中,在确定至少一个键对应的取值存储在第二预设存储区域的情况下,服务器将至少一个键对应的取值返回至客户端的步骤可以包括:
步骤S520,通过主线程将客户端挂起,并生成加载任务,以便通过子线程执行加载任务将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域;
步骤S522,通过主线程查询到被挂起的客户端,将至少一个键对应的取值返回至客户端。
可选的,图5示出了主线程与子线程的交互示意图,具体步骤如下:
步骤S1,主线程接收访问命令,并进行分析。具体的,服务器中的主线程接收到客户端发送访问命令之后,分析与该访问命令会相关的键的取值,并确定该取值所在的存储区域。
步骤S2,主线程挂起该客户端。具体的,如果步骤S1中的取值所在的存储区域不在第一预设存储区域中,则主线程挂起该客户端。
步骤S3,主线程生成加载(即Load)任务。其中,加载任务用于读取第二预设存储区域中的取值。
步骤S4,子线程执行加载任务,将取值从第二预设存储区域中读取至第一预设存储区域。
步骤S5,子线程检测是否还存在加载任务,即子线程检测是否还存在未执行完的加载任务,如果还存在加载任务未执行完,则继续执行加载任务,否则执行步骤S6。
步骤S6,子线程完成加载任务。
步骤S7,子线程向主线程发送通知消息。
步骤S8,主线程找到已经挂起的客户端,并继续执行访问命令。具体的,主线程在接收到通知消息之后,确认子线程已完成加载任务,则主线程继续执行客户端发送的访问命令。
可选的,在通过主线程接收来自于客户端的访问命令之前,服务器还执行如下步骤:
步骤S54,通过主线程对第一预设存储区域的已用空间进行周期性检测;
步骤S56,当已用空间大于第一预设阈值时,按照多个维度从第一预设存储区域中查询待交换数据,并生成交换任务,以便通过子线程执行交换任务,将待交换数据存储至第二预设存储区域并释放待交换数据在第一预设存储区域中占用的存储空间,其中,多个维度至少包括:数据访问时间、数据访问频率、数据大小。
需要说明的是,基于上述步骤S54至步骤S56所限定的方案对应的主线程与子线程的交互示意图如图6所示,现以图6为例对步骤S54至步骤S56所限定的方案进行介绍。
步骤S61,主线程对第一预设存储区域的已用空间进行周期性检测。具体的,主线程检测第一预设存储区域的已用空间是否大于第一预设阈值。
步骤S62,主线程检测到第一预设存储区域的已用空间大于第一预设阈值,执行步骤S63。
步骤S63,主线程从多个维度确定待交换数据,其中,待交换数据可以为访问频率低于预设频率的数据。
步骤S64,主线程生成交换(即Swap)任务,并将交换任务发送至子线程,子线程在接收到交换任务之后,执行步骤S65。
步骤S65,子线程按照编码规则将待交换数据存储在第二预设存储区域中。
步骤S66,子线程释放待交换数据在第一预设存储区域中所占用的存储空间。
需要说明的是,在第一预设存储区域与第二预设存储区域进行数据交换的过程中,由于第一预设存储区域的数据结构与第二预设存储区域的数据结构可能不完全一致,因此,在将第一预设存储区域的数据存储至第二预设存储区域的过程中,需要对待交换数据进行编解码(上述过程未写出解码过程)。
具体的,在通过子线程执行交换任务,服务器将待交换数据存储至第二预设存储区域的过程中,如果待交换数据的数据长度大于第二预设阈值,则采用压缩编码方式进行数据传输,如果待交换数据的数据长度小于第二预设阈值,则采用非压缩编码方式进行数据传输。
需要说明的是,当待交换数据的数据长度大于第二预设阈值时,采用压缩编码的方式可以减少实际读写数据的大小,加快数据的读写速率;当待交换数据的数据长度小于第二预设阈值时,采用非压缩编码方式可以减少数据读写过程中占用的CPU内存,进一步提高了数据读写的速率。
此外,还需要说明的是,本申请所提供的数据的访问命令处理方法所采用的存储结构包括:第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,第一预设存储区域与第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且第一预设存储区域的访问速度优于第二预设存储区域,第三预设存储区域用于记录从预设时刻起与Redis数据库所存储数据对应的指令操作。
另外,传统的Redis数据库持久化方式采用RDB与AOF相结合的方式,RDB中存储了某一时刻Redis数据库中所有的键值对结构的数据,AOF存储了RDB中数据保存时刻起后续的所有操作。而在混合存储的场景下,如果仍采用传统的持久化方式,则在生成RDB的过程中需要将外存上的数据全部读取出来,然后再写入RDB中,非常耗时。
为解决上述问题,本申请采用RDB、ROCKSDB快照与AOF相结合的方式存储数据,如图3所示,其中,RDB中保存某一时刻所有在内存中的数据,ROCKSDB快照中保存了该时刻起所有在外存中的数据。通过该方式,生成RDB时,仅需要存储内存中的数据即可,从而大大较少了持久化的时间。
此外,还需要说明的是,本申请所提供的方案除了增加数据在内存和外存间的交互部分外,对Redis数据库的业务处理逻辑具体的代码没有任何修改,可以达到与Redis数据库的全面兼容的效果,不同命令的性能差异也和Redis数据库完全一致。另外,如果所有数据都落盘,则数据库会产生大量的磁盘读写流量,会对磁盘寿命和性能造成影响。为解决该问题,本申请将访问频率较高的数据保存在内存中不会有磁盘的读写流量产生,仅有访问频率较低的数据写到磁盘,并从磁盘读取时会有少量的磁盘读写流量产生,热点数据(即访问频率较高的数据)性能与内存数据库的性能一致。
此外,本申请中,内存中保存所有的键,查询键时无需访问外存,查询性能与Redis数据库Redis。存储部分通过RockSDB和用户态文件系统的结合,整体读写性能大大提升。另外,灵活可配置的编码方式可适应不同场景需求,存储和读取数据时整体性能更好。最后,本申请通过采用RDB、AOF、RocksDB快照相结合的方式持久化数据,不需要将磁盘上RocksDB中的数据也读取出来写到RDB,可以加速持久化过程。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的数据的访问命令处理方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述数据的访问命令处理方法的数据的访问命令处理装置,如图7所示,该装置70包括:接收模块701以及确定模块703。
其中,接收模块701,用于通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;确定模块703,用于根据访问命令待获取键值的存储位置确定访问命令的处理方式。
此处,需要说明的是,上述接收模块701以及确定模块703对应于实施例1中的步骤S202至步骤S204,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
在一种可选的方案中,确定模块包括:第一确定模块以及第一响应模块。其中,第一确定模块,用于根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在第一预设存储区域;第一响应模块,用于响应于访问命令,将至少一个键对应的取值返回至客户端。
此处,需要说明的是,上述第一确定模块以及第一响应模块对应于实施例1中的步骤S40至步骤S42,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
在一种可选的方案中,确定模块包括:第二确定模块以及第二响应模块。其中,第二确定模块,用于根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在与第一预设存储区域关联的第二预设存储区域,其中,第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;第二响应模块,用于响应于访问命令,将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域,以便将至少一个键对应的取值返回至客户端。
此处,需要说明的是,上述第二确定模块以及第二响应模块对应于实施例1中的步骤S50至步骤S52,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
在一种可选的方案中,第二响应模块包括:第一生成模块以及反馈模块。其中,第一生成模块,用于通过主线程将客户端挂起,并生成加载任务,以便通过子线程执行加载任务将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域;反馈模块,用于通过主线程查询到被挂起的客户端,将至少一个键对应的取值返回至客户端。
此处,需要说明的是,上述第一生成模块以及反馈模块对应于实施例1中的步骤S520至步骤S522,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
在一种可选的方案中,数据的访问命令处理装置还包括:检测模块以及第二生成模块。其中,检测模块,用于通过主线程对第一预设存储区域的已用空间进行周期性检测;第二生成模块,用于当已用空间大于第一预设阈值时,按照多个维度从第一预设存储区域中查询待交换数据,并生成交换任务,以便通过子线程执行交换任务,将待交换数据存储至第二预设存储区域并释放待交换数据在第一预设存储区域中占用的存储空间,其中,多个维度至少包括:数据访问时间、数据访问频率、数据大小。
此处,需要说明的是,上述检测模块以及第二生成模块对应于实施例1中的步骤S54至步骤S56,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
在一种可选的方案中,在通过子线程执行交换任务,将待交换数据存储至第二预设存储区域的过程中,如果待交换数据的数据长度大于第二预设阈值,则采用压缩编码方式进行数据传输,如果待交换数据的数据长度小于第二预设阈值,则采用非压缩编码方式进行数据传输。
在一种可选的方案中,数据的访问命令处理装置所采用的存储结构包括:第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,第一预设存储区域与第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且第一预设存储区域的访问速度优于第二预设存储区域,第三预设存储区域用于记录从预设时刻起与Redis数据库所存储数据对应的指令操作。
实施例3
根据本申请实施例,还提供了一种用于实施上述数据的访问命令处理方法的数据的访问命令处理系统,该系统可执行实施例1中的数据的访问命令处理方法,其中,该系统包括:处理器以及存储器。
其中,存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
由上可知,采用混合存储技术存储数据的方式,通过主线程接收来自于客户端的访问命令,并根据访问命令待获取键值的存储位置确定访问命令的处理方式,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域。
在上述过程中,由于第一预设存储区域为基于内存的存储区域,因此,在接收到访问命令之后,服务器从内存中确定待获取键值的存储位置是内存还是磁盘,并根据待获取键值的不同存储位置对访问命令采取不同的处理方式,以最优的处理方式处理访问命令,从而达到了对不同存储区域的数据进行读写的目的,实现了提高数据读写性能的技术效果。
由此可见,本申请所提供的方案可以解决相关技术中存储系统中数据的读写性能差的技术问题。
实施例4
本申请的实施例可以提供一种计算设备,该计算设备可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算设备也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算设备可以执行数据的访问命令处理方法中以下步骤的程序代码:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
可选地,图8是根据本申请实施例的一种计算设备的结构框图。如图8所示,该计算设备80可以包括:一个或多个(图中仅示出一个)处理器802、存储器804以及传输装置806。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的数据的访问命令处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据的访问命令处理方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
可选的,上述处理器还可以执行如下步骤的程序代码:根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在第一预设存储区域;响应于访问命令,将至少一个键对应的取值返回至客户端。
可选的,上述处理器还可以执行如下步骤的程序代码:根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在与第一预设存储区域关联的第二预设存储区域,其中,第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于访问命令,将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域,以便将至少一个键对应的取值返回至客户端。
可选的,上述处理器还可以执行如下步骤的程序代码:通过主线程将客户端挂起,并生成加载任务,以便通过子线程执行加载任务将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域;通过主线程查询到被挂起的客户端,将至少一个键对应的取值返回至客户端。
可选的,上述处理器还可以执行如下步骤的程序代码:通过主线程对第一预设存储区域的已用空间进行周期性检测;当已用空间大于第一预设阈值时,按照多个维度从第一预设存储区域中查询待交换数据,并生成交换任务,以便通过子线程执行交换任务,将待交换数据存储至第二预设存储区域并释放待交换数据在第一预设存储区域中占用的存储空间,其中,多个维度至少包括:数据访问时间、数据访问频率、数据大小。
可选的,上述处理器还可以执行如下步骤的程序代码:在通过子线程执行交换任务,将待交换数据存储至第二预设存储区域的过程中,如果待交换数据的数据长度大于第二预设阈值,则采用压缩编码方式进行数据传输,如果待交换数据的数据长度小于第二预设阈值,则采用非压缩编码方式进行数据传输。
需要说明的是,本申请所采用的存储结构包括:第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,第一预设存储区域与第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且第一预设存储区域的访问速度优于第二预设存储区域,第三预设存储区域用于记录从预设时刻起与Redis数据库所存储数据对应的指令操作。
本领域普通技术人员可以理解,图8所示的结构仅为示意,计算设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图8其并不对上述电子装置的结构造成限定。例如,计算设备80还可包括比图8中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图8所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例5
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据的访问命令处理方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过主线程接收来自于客户端的访问命令,其中,访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;根据访问命令待获取键值的存储位置确定访问命令的处理方式。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在第一预设存储区域;响应于访问命令,将至少一个键对应的取值返回至客户端。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据访问命令待获取键值的存储位置确定至少一个键对应的取值存储在与第一预设存储区域关联的第二预设存储区域,其中,第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于访问命令,将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域,以便将至少一个键对应的取值返回至客户端。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过主线程将客户端挂起,并生成加载任务,以便通过子线程执行加载任务将至少一个键对应的取值从第二预设存储区域读取至第一预设存储区域;通过主线程查询到被挂起的客户端,将至少一个键对应的取值返回至客户端。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:通过主线程对第一预设存储区域的已用空间进行周期性检测;当已用空间大于第一预设阈值时,按照多个维度从第一预设存储区域中查询待交换数据,并生成交换任务,以便通过子线程执行交换任务,将待交换数据存储至第二预设存储区域并释放待交换数据在第一预设存储区域中占用的存储空间,其中,多个维度至少包括:数据访问时间、数据访问频率、数据大小。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在通过子线程执行交换任务,将待交换数据存储至第二预设存储区域的过程中,如果待交换数据的数据长度大于第二预设阈值,则采用压缩编码方式进行数据传输,如果待交换数据的数据长度小于第二预设阈值,则采用非压缩编码方式进行数据传输。
需要说明的是,本申请所采用的存储结构包括:第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,第一预设存储区域与第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且第一预设存储区域的访问速度优于第二预设存储区域,第三预设存储区域用于记录从预设时刻起与Redis数据库所存储数据对应的指令操作。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (9)
1.一种数据的访问命令处理方法,其特征在于,包括:
通过主线程接收来自于客户端的访问命令,其中,所述访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,所述第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式;
所述方法所采用的存储结构包括:所述第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,所述第一预设存储区域与所述第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且所述第一预设存储区域的访问速度优于所述第二预设存储区域,所述第三预设存储区域用于记录从所述预设时刻起与所述Redis数据库所存储数据对应的指令操作;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式包括:根据所述访问命令待获取键值的存储位置确定所述至少一个键对应的取值存储在与所述第一预设存储区域关联的第二预设存储区域,其中,所述第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于所述访问命令,将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域,以便将所述至少一个键对应的取值返回至所述客户端。
2.根据权利要求1所述的方法,其特征在于,根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式包括:
根据所述访问命令待获取键值的存储位置确定所述至少一个键对应的取值存储在所述第一预设存储区域;
响应于所述访问命令,将所述至少一个键对应的取值返回至所述客户端。
3.根据权利要求1所述的方法,其特征在于,响应于所述访问命令,将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域,以便将所述至少一个键对应的取值返回至所述客户端包括:
通过所述主线程将所述客户端挂起,并生成加载任务,以便通过子线程执行所述加载任务将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域;
通过所述主线程查询到被挂起的所述客户端,将所述至少一个键对应的取值返回至所述客户端。
4.根据权利要求1所述的方法,其特征在于,在通过所述主线程接收来自于所述客户端的所述访问命令之前,还包括:
通过所述主线程对所述第一预设存储区域的已用空间进行周期性检测;
当所述已用空间大于第一预设阈值时,按照多个维度从所述第一预设存储区域中查询待交换数据,并生成交换任务,以便通过子线程执行所述交换任务,将所述待交换数据存储至第二预设存储区域并释放所述待交换数据在所述第一预设存储区域中占用的存储空间,其中,所述多个维度至少包括:数据访问时间、数据访问频率、数据大小。
5.根据权利要求4所述的方法,其特征在于,在通过所述子线程执行所述交换任务,将所述待交换数据存储至所述第二预设存储区域的过程中,如果所述待交换数据的数据长度大于第二预设阈值,则采用压缩编码方式进行数据传输,如果所述待交换数据的数据长度小于第二预设阈值,则采用非压缩编码方式进行数据传输。
6.一种数据的访问命令处理装置,其特征在于,包括:
接收模块,用于通过主线程接收来自于客户端的访问命令,其中,所述访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,所述第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;
确定模块,用于根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式;
所述装置所采用的存储结构包括:所述第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,所述第一预设存储区域与所述第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且所述第一预设存储区域的访问速度优于所述第二预设存储区域,所述第三预设存储区域用于记录从所述预设时刻起与所述Redis数据库所存储数据对应的指令操作;
所述确定模块,还用于:根据所述访问命令待获取键值的存储位置确定所述至少一个键对应的取值存储在与所述第一预设存储区域关联的第二预设存储区域,其中,所述第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于所述访问命令,将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域,以便将所述至少一个键对应的取值返回至所述客户端。
7.一种数据的访问命令处理系统,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
通过主线程接收来自于客户端的访问命令,其中,所述访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,所述第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式;
所述存储器所采用的存储结构包括:所述第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,所述第一预设存储区域与所述第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且所述第一预设存储区域的访问速度优于所述第二预设存储区域,所述第三预设存储区域用于记录从所述预设时刻起与所述Redis数据库所存储数据对应的指令操作;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式包括:根据所述访问命令待获取键值的存储位置确定所述至少一个键对应的取值存储在与所述第一预设存储区域关联的第二预设存储区域,其中,所述第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于所述访问命令,将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域,以便将所述至少一个键对应的取值返回至所述客户端。
8.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行以下步骤:
通过主线程接收来自于客户端的访问命令,其中,所述访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,所述第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式;
所述存储介质所采用的存储结构包括:所述第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,所述第一预设存储区域与所述第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且所述第一预设存储区域的访问速度优于所述第二预设存储区域,所述第三预设存储区域用于记录从所述预设时刻起与所述Redis数据库所存储数据对应的指令操作;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式包括:根据所述访问命令待获取键值的存储位置确定所述至少一个键对应的取值存储在与所述第一预设存储区域关联的第二预设存储区域,其中,所述第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于所述访问命令,将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域,以便将所述至少一个键对应的取值返回至所述客户端。
9.一种计算设备,包括处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行以下步骤:
通过主线程接收来自于客户端的访问命令,其中,所述访问命令用于从第一预设存储区域获取当前存储的至少一个键对应的取值,所述第一预设存储区域为基于内存的采用键值对结构进行数据存储的存储区域;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式;
所述计算设备所采用的存储结构包括:所述第一预设存储区域、第二预设存储区域和第三预设存储区域,其中,所述第一预设存储区域与所述第二预设存储区域共同用于保存在预设时刻Redis数据库所存储的数据,且所述第一预设存储区域的访问速度优于所述第二预设存储区域,所述第三预设存储区域用于记录从所述预设时刻起与所述Redis数据库所存储数据对应的指令操作;
根据所述访问命令待获取键值的存储位置确定所述访问命令的处理方式包括:根据所述访问命令待获取键值的存储位置确定所述至少一个键对应的取值存储在与所述第一预设存储区域关联的第二预设存储区域,其中,所述第二预设存储区域为基于外存的采用键值对结构进行数据存储的存储区域;响应于所述访问命令,将所述至少一个键对应的取值从所述第二预设存储区域读取至所述第一预设存储区域,以便将所述至少一个键对应的取值返回至所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811097483.6A CN110928935B (zh) | 2018-09-19 | 2018-09-19 | 数据的访问命令处理方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811097483.6A CN110928935B (zh) | 2018-09-19 | 2018-09-19 | 数据的访问命令处理方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928935A CN110928935A (zh) | 2020-03-27 |
CN110928935B true CN110928935B (zh) | 2023-11-14 |
Family
ID=69855338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811097483.6A Active CN110928935B (zh) | 2018-09-19 | 2018-09-19 | 数据的访问命令处理方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928935B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930305A (zh) * | 2020-07-24 | 2020-11-13 | 北京金山云网络技术有限公司 | 数据的存储方法和装置、存储介质、电子装置 |
CN112148387A (zh) * | 2020-10-14 | 2020-12-29 | 中国平安人寿保险股份有限公司 | 预加载反馈信息的方法、装置、计算机设备及存储介质 |
CN112631517B (zh) * | 2020-12-24 | 2021-09-03 | 北京百度网讯科技有限公司 | 数据存储方法、装置、电子设备和存储介质 |
CN113157629A (zh) * | 2021-04-20 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114443526B (zh) * | 2021-12-24 | 2022-12-13 | 荣耀终端有限公司 | 一种数据读/写控制方法及电子设备 |
CN114549042B (zh) * | 2022-01-10 | 2022-10-18 | 北京元年科技股份有限公司 | 成本分摊方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061678A (en) * | 1997-10-31 | 2000-05-09 | Oracle Corporation | Approach for managing access to large objects in database systems using large object indexes |
CN102541605A (zh) * | 2011-12-30 | 2012-07-04 | Tcl集团股份有限公司 | 基于Android系统的图片加载方法和装置 |
CN103929185A (zh) * | 2013-01-10 | 2014-07-16 | 国际商业机器公司 | 实时减少数据压缩的中央处理单元开销的方法和系统 |
US9563426B1 (en) * | 2013-12-30 | 2017-02-07 | EMC IP Holding Company LLC | Partitioned key-value store with atomic memory operations |
CN106445839A (zh) * | 2016-10-09 | 2017-02-22 | 国云科技股份有限公司 | 一种高性能文件存储系统及其实现方法 |
CN106445353A (zh) * | 2016-11-14 | 2017-02-22 | 乐视控股(北京)有限公司 | 一种超大图片的显示方法、装置及电子设备 |
CN107463627A (zh) * | 2017-07-11 | 2017-12-12 | 深圳市云领天下科技有限公司 | 一种图片加载方法及终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411539B2 (en) * | 2014-09-24 | 2016-08-09 | International Business Machines Corporation | Providing access information to a storage controller to determine a storage tier for storing data |
-
2018
- 2018-09-19 CN CN201811097483.6A patent/CN110928935B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061678A (en) * | 1997-10-31 | 2000-05-09 | Oracle Corporation | Approach for managing access to large objects in database systems using large object indexes |
CN102541605A (zh) * | 2011-12-30 | 2012-07-04 | Tcl集团股份有限公司 | 基于Android系统的图片加载方法和装置 |
CN103929185A (zh) * | 2013-01-10 | 2014-07-16 | 国际商业机器公司 | 实时减少数据压缩的中央处理单元开销的方法和系统 |
US9563426B1 (en) * | 2013-12-30 | 2017-02-07 | EMC IP Holding Company LLC | Partitioned key-value store with atomic memory operations |
CN106445839A (zh) * | 2016-10-09 | 2017-02-22 | 国云科技股份有限公司 | 一种高性能文件存储系统及其实现方法 |
CN106445353A (zh) * | 2016-11-14 | 2017-02-22 | 乐视控股(北京)有限公司 | 一种超大图片的显示方法、装置及电子设备 |
CN107463627A (zh) * | 2017-07-11 | 2017-12-12 | 深圳市云领天下科技有限公司 | 一种图片加载方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN110928935A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110928935B (zh) | 数据的访问命令处理方法、装置和系统 | |
CN109791471B (zh) | 虚拟化外围装置处的非易失性存储装置 | |
US11500810B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
US20240095043A1 (en) | Execution of sub-application processes within application program | |
US20150012735A1 (en) | Techniques to Initialize from a Remotely Accessible Storage Device | |
US11237761B2 (en) | Management of multiple physical function nonvolatile memory devices | |
JP2017519294A (ja) | フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc) | |
CN111666184B (zh) | 固态驱动器ssd硬盘测试方法、装置及电子设备 | |
CN109033328A (zh) | 一种访问请求处理方法、装置、设备及可读存储介质 | |
US8667157B2 (en) | Hardware bus redirection switching | |
US11507292B2 (en) | System and method to utilize a composite block of data during compression of data blocks of fixed size | |
US11422963B2 (en) | System and method to handle uncompressible data with a compression accelerator | |
CN117668319B (zh) | 数据查询方法、电子设备及存储介质 | |
US12056372B2 (en) | Collecting quality of service statistics for in-use child physical functions of multiple physical function non-volatile memory devices | |
US11983182B2 (en) | System and method to enable a data analytics in a smart data accelerator interface device | |
CN116301593A (zh) | 在云平台下跨集群跨存储拷贝块数据的方法及应用 | |
CN116340208A (zh) | 基于QSPI的flash访问方法及应用 | |
CN116185518A (zh) | 一种bios的配置模式的设置方法、装置及存储介质 | |
CN117631994A (zh) | 卷在线迁移方法、装置、电子设备及可读存储介质 | |
JP5705757B2 (ja) | アプリケーション実行装置、システム、及びプログラム | |
CN117435212A (zh) | 裸金属服务器管理方法及相关装置 | |
CN114168083A (zh) | 一种数据存储系统、方法及电子设备 | |
KR20070030041A (ko) | 페이징 기법을 이용한 이동통신 단말기의 메모리 관리 방법 | |
Tang | The image monitoring drive program design on Win CE operation system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |