一种解决键值数据库文件损坏的装置、方法和设备与流程

文档序号:20439836发布日期:2020-04-17 22:19阅读:218来源:国知局
一种解决键值数据库文件损坏的装置、方法和设备与流程

本发明涉及数据处理技术领域,特别是涉及一种解决键值数据库文件损坏的装置、方法和设备。



背景技术:

redis是一种基于内存的高性能键值数据库,其每秒可以响应十万次的读写请求,目前已被大量大中型网站所采用。为了保证数据的完全耐久性,redis采用文件追加(appendonlyfile,aof)的方式对数据进行持久化,即以追加的方式将内存中的写命令保存到磁盘中,此方法可以最大限度的保证数据的安全性。但是,如果aof持久化过程触发后,服务器出现故障可能会导致aof文件损坏,具体表现为aof文件尾部命令写入不完整,从而导致redis启动失败。而现有技术的解决办法是:提供aof-load-truncated配置项,在此配置下启动redis会自动跳过aof文件格式检测,然而此方法可能会导致重要数据丢失。或者,在redis启动前使用其自带的redis-check-aof工具修复aof文件,但是当aof文件很大时修复过程耗时较长。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种解决键值数据库文件损坏的装置、方法和设备,用于解决现有技术中存在的技术问题。

为实现上述目的及其他相关目的,本发明提供一种解决键值数据库文件损坏的装置,包括有:

获取模块,用于获取键值数据库的数据;

映射模块,用于在本地存储中映射虚拟存储,建立所述虚拟存储与目标存储的卷映射;

转发模块,用于将所述键值数据库的数据转发给所述虚拟存储和所述目标存储;

控制模块,用于响应键值数据库的数据写请求,将所述键值数据库中的数据写入虚拟存储中,并按照所述卷映射将所述键值数据库的数据写入所述目标存储中;若某条数据写入目标存储失败,控制所述转发模块将所述虚拟存储中写入的所述某条数据转发给所述目标存储,将所述某条数据重新写入目标存储中。

可选地,所述获取模块还用于获取键值数据库集群的数据;

所述转发模块还用于将所述键值数据库集群的数据转发给所述虚拟存储和所述目标存储;

所述控制模块还用于响应键值数据库集群的数据写请求,将所述键值数据库集群的数据写入虚拟存储中,并按照所述卷映射将键值数据库集群的数据写入所述目标存储中;若键值数据库集群中某一键值数据库的数据写入目标存储失败,控制所述转发模块将所述虚拟存储中写入的键值数据库集群中另一键值数据库的数据转发给所述目标存储,将所述另一键值数据库的数据重新写入目标存储中。

可选地,所述控制模块还包括有检测单元,用于检测键值数据库中某条数据是否成功写入目标存储;和/或,用于检测键值数据库集群中某一键值数据库的数据是否成功写入目标存储。

可选地,所述控制模块包括有清除单元;

若成功将所述键值数据库的某条数据写入目标存储,所述清除单元清除所述虚拟存储中写入的所述某条数据;

和/或,若成功将键值数据库集群中某一键值数据库的数据写入目标存储,所述清除单元清除所述虚拟存储中写入的所述某一键值数据库的数据。

可选地,所述获取模块还包括有配置单元,所述配置单元用于配置以下至少之一:

键值数据库集群账号、键值数据库集群密码、键值数据库集群广播域、目标存储访问方式、卷与本地存储的映射、数据写请求的写策略。

本发明还提供一种解决键值数据库文件损坏的方法,所述方法包括以下步骤:

获取键值数据库的数据;

在本地存储中映射虚拟存储,建立所述虚拟存储与目标存储的卷映射;

将所述键值数据库的数据转发给所述虚拟存储和所述目标存储;

响应于键值数据库的数据写请求,将所述键值数据库中的数据写入虚拟存储中,并按照所述卷映射将所述键值数据库的数据写入所述目标存储中;若某条数据写入目标存储失败,将所述虚拟存储中写入的所述某条数据转发给所述目标存储,将所述某条数据重新写入目标存储中。

可选地,还包括有:获取键值数据库集群的数据;

将所述键值数据库集群的数据转发给所述虚拟存储和所述目标存储;

响应于键值数据库集群的数据写请求,将所述键值数据库集群的数据写入虚拟存储中,并按照所述卷映射将键值数据库集群的数据写入所述目标存储中;若键值数据库集群中某一键值数据库的数据写入目标存储失败,将所述虚拟存储中写入的键值数据库集群中另一键值数据库的数据转发给所述目标存储,将所述另一键值数据库的数据重新写入目标存储中。

可选地,还包括检测键值数据库中某条数据是否成功写入目标存储;和/或,检测键值数据库集群中某一键值数据库的数据是否成功写入目标存储。

可选地,还包括有:若成功将所述键值数据库的某条数据写入目标存储,清除所述虚拟存储中写入的所述某条数据;和/或,若成功将键值数据库集群中某一键值数据库的数据写入目标存储,清除所述虚拟存储中写入的所述某一键值数据库的数据。

本发明还提供一种设备,包括:

一个或多个处理器;和

其上存储有指令的一个或多个机器可读介质,当所述一个或多个处理器执行时,使得所述设备执行如上述中一个或多个所述的方法。

如上所述,本发明提供一种解决键值数据库文件损坏的装置、方法和设备,具有以下有益效果:通过获取模块获取键值数据库的数据;映射模块在本地存储中映射虚拟存储,建立所述虚拟存储与目标存储的卷映射;转发模块将所述键值数据库的数据转发给所述虚拟存储和所述目标存储;控制模块响应键值数据库的数据写请求,将所述键值数据库中的数据写入虚拟存储中,并按照所述卷映射将所述键值数据库的数据写入所述目标存储中;若某条数据写入目标存储失败,控制所述转发模块将所述虚拟存储中写入的所述某条数据转发给所述目标存储,将所述某条数据重新写入目标存储中。本发明在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照键值数据库的数据写请求,将数据同时写入虚拟存储和目标存储中,若写入目标存储失败,则将虚拟存储中写入的数据转发至目标存储中进行重新写入。本发明不会自动跳过aof文件格式的检测,不会导致键值数据库的数据出现丢失,降低了数据丢失的风险;同时,本发明不需要采用工具对aof文件进行修复,大大地提升了维护效率,可以适用更广泛的应用场景。

附图说明

图1为一实施例提供的解决键值数据库文件损坏的装置的连接示意图。

图2为一实施例提供的解决键值数据库文件损坏的方法的流程示意图。

图3为另一实施例提供的解决键值数据库文件损坏的方法的流程示意图。

图4为一实施例提供的终端设备的硬件结构示意图。

图5为另一实施例提供的终端设备的硬件结构示意图。

元件标号说明

m10获取模块

m20映射模块

m30转发模块

m40控制模块

1100输入设备

1101第一处理器

1102输出设备

1103第一存储器

1104通信总线

1200处理组件

1201第二处理器

1202第二存储器

1203通信组件

1204电源组件

1205多媒体组件

1206语音组件

1207输入/输出接口

1208传感器组件

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

请参阅图1至图5。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”及“一”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。

请参阅图1,本实施例提供一种解决键值数据库redis文件损坏的装置,包括有:

获取模块m10,用于获取键值数据库redis的数据;

映射模块m20,与获取模块m10连接,用于在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射。若虚拟存储中包括有键值数据库的卷文件系统,则直接挂载目标存储;若不包括所述卷文件系统,则先对虚拟存储进行格式化,再挂载目标存储。本申请实施例中,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。其中,在本申请实施例中,本地存储为装置自带存储,虚拟存储为根据本地存储映射的虚拟磁盘;目标存储为第三方共享存储,第三方共享存储例如包括ceph-rbd和iscsi;其中,rbd为可靠的自治的分布式对象存储块设备(reliableautoonomicdistributedobjectstoreblockdevice),iscsi为因特网小型计算机系统接口(internetsmallcomputersysteminterface)。

转发模块m30,与映射模块m20连接,用于将键值数据库redis的数据转发给虚拟存储和目标存储。本申请实施例中,转发模块m30根据预先设置好的转发规则完成数据的转发。实际情况下可根据需求选择对应的转发规则,转发规则主要有直接透传和高可用写,直接透传用于保证高性能,高可用写用于保证高可靠性。

控制模块m40,与转发模块m30连接,用于响应键值数据库redis的数据写请求。键值数据库redis发出写请求后,控制模块m40对数据写请求完成虚拟文件系统(virtualfilesystem,vfs)拆分,将拆分后的数据写请求转换为具体的开/闭命令。再将键值数据库redis中的数据写入虚拟存储中,并按照卷映射将键值数据库redis的数据写入目标存储中。若某条数据写入目标存储失败,控制转发模块m30将虚拟存储中写入的该条数据转发给目标存储,将某条数据重新写入目标存储中。具体地,例如第i条数据写入目标存储失败,则控制模块m40控制转发模块m30将虚拟存储中写入的第i条数据转发给目标存储,重新将第i条数据写入目标存储中。

本装置在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照键值数据库发出的数据写请求,将键值数据库的数据同时写入虚拟存储和目标存储中。若写入目标存储失败,则将虚拟存储中写入的数据转发至目标存储中进行重新写入。通过本发明的方案,本装置不会自动跳过对aof文件格式的检测,不会导致键值数据库redis的数据出现丢失,降低了数据丢失的风险;同时,本发明不需要采用工具对aof文件进行修复,大大地提升了维护效率,可以适用更广泛的应用场景。

在一示例性实施例中,获取模块m10还用于获取键值数据库redis集群的数据;获取模块m10还包括有配置单元,配置单元用于配置以下一个或多个:键值数据库redis集群账号、键值数据库redis集群密码、键值数据库redis集群广播域、目标存储访问方式、卷与本地存储的映射、数据写请求的写策略、用户名账户、用户名密码。

映射模块m20,与获取模块m10连接,用于在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射。若虚拟存储中包括有键值数据库的卷文件系统,则直接挂载目标存储;若不包括所述卷文件系统,则先对虚拟存储进行格式化,再挂载目标存储。本申请实施例中,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。其中,在本申请实施例中,本地存储为装置自带存储,虚拟存储为根据本地存储映射的虚拟磁盘;目标存储为第三方共享存储,第三方共享存储例如包括ceph-rbd和iscsi;其中,rbd为可靠的自治的分布式对象存储块设备(reliableautoonomicdistributedobjectstoreblockdevice),iscsi为因特网小型计算机系统接口(internetsmallcomputersysteminterface)。

转发模块m30还用于将键值数据库redis集群的数据转发给虚拟存储和目标存储;本申请实施例中,转发模块m30根据预先设置好的转发规则完成数据的转发,实际情况下可根据需求选择对应的转发规则。转发规则主要有直接透传和高可用写,直接透传用于保证高性能,高可用写用于保证高可靠性。如果选择高可用写,则可以将键值数据库集群中某一键值数据库的数据通过网络将数据转发到键值数据库集群中的其他键值数据库中进行缓存。

控制模块m40还用于响应键值数据库redis集群的数据写请求,键值数据库redis集群发出写请求后,控制模块m40对数据写请求完成虚拟文件系统(virtualfilesystem,vfs)拆分,将拆分后的数据写请求转换为具体的开/闭命令。再将键值数据库redis集群的数据写入虚拟存储中,并按照卷映射将键值数据库redis集群的数据写入目标存储中;若键值数据库redis集群中某一键值数据库redis的数据写入目标存储失败,控制转发模块m30将虚拟存储中写入的键值数据库redis集群中另一键值数据库redis的数据转发给目标存储,将另一键值数据库redis的数据重新写入目标存储中。具体地,例如第k个键值数据库的数据写入目标存储失败,则控制模块m40控制转发模块m30将虚拟存储中写入的第j个键值数据库的数据转发给目标存储,重新将第j个键值数据库的数据写入目标存储中。其中,k≠j,第k个键值数据库和第j个键值数据库属于同一键值数据库集群。

本装置还在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库集群中所有键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照键值数据库集群发出的数据写请求,将键值数据库集群中所有键值数据库的数据同时写入虚拟存储和目标存储中,若某一键值数据库的数据写入目标存储失败,则将虚拟存储中写入的键值数据库redis集群中另一键值数据库redis的数据转发给目标存储中进行重新写入。本装置不会导致键值数据库集群中键值数据库redis的数据出现丢失,降低了数据丢失的风险;同时,本发明不需要采用工具对aof文件进行修复,大大地提升了维护效率,可以适用更广泛的应用场景。

在一些实施例中,控制模块还包括有检测单元,用于检测键值数据库redis中某条数据是否成功写入目标存储;和/或,用于检测键值数据库redis集群中某一键值数据库redis的数据是否成功写入目标存储。控制模块包括有清除单元;若成功将键值数据库redis的某条数据写入目标存储,清除单元清除虚拟存储中写入的某条数据;和/或,若成功将键值数据库redis集群中某一键值数据库redis的数据写入目标存储,清除单元清除虚拟存储中写入的某一键值数据库redis的数据。

具体地,若检测单元检测到键值数据库redis中某条数据成功写入目标存储中,则目标存储向控制模块发出第一写入信号,控制模块控制清除单元清除虚拟存储中写入的该条数据,并进行下一条数据的写入。若检测单元检测到键值数据库redis中某条数据写入目标存储失败,则目标存储向控制模块发出第一未写入信号,控制模块控制转发模块将虚拟存储中写入的该条数据转发给目标存储,将该条数据重新写入目标存储中。

若检测单元检测到键值数据库redis集群中某一键值数据库redis的数据成功写入目标存储,则目标存储向控制模块发出第二写入信号,控制模块控制清除单元清除虚拟存储中写入的某一键值数据库redis的数据,并进行下一键值数据库的数据的写入。键值数据库集群中的每个键值数据库相互发送心跳信息,若检测单元检测到键值数据库redis集群中超过一半的键值数据库未收到某一键值数据库的心跳信息,则认定键值数据库redis集群中某一键值数据库redis的数据写入目标存储失败,则目标存储向控制模块发出第二未写入信号,控制模块控制转发模块将虚拟存储中写入的键值数据库redis集群中另一键值数据库redis的数据转发给目标存储,将另一键值数据库redis的数据重新写入目标存储中。

综上所述,本装置在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库的数据和/或键值数据库集群中键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照发出的数据写请求,将数据同时写入虚拟存储和目标存储中。若将某数据写入目标存储失败,则将虚拟存储中写入的对应数据转发至目标存储中进行重新写入。通过本发明的方案,本发明解决redis持久化文件格式损坏的方法,可以在redis服务提供节点故障的情况下保证aof文件的完整性。不仅较现有方法相比稳定性得到了增强,有效降低了数据丢失的风险;而且本发明还避免了采用redis-check-aof工具进行修复,大大提升了维护效率,从而可以适用于更广泛的应用场景。

如图2所示,本发明还提供一种解决键值数据库redis文件损坏的方法,方法包括以下步骤:

s100,获取键值数据库redis的数据;

s200,在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射;若虚拟存储中包括有键值数据库的卷文件系统,则直接挂载目标存储;若不包括所述卷文件系统,则先对虚拟存储进行格式化,再挂载目标存储。本申请实施例中,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。其中,在本申请实施例中,本地存储为装置自带存储,虚拟存储为根据本地存储映射的虚拟磁盘;目标存储为第三方共享存储,第三方共享存储例如包括ceph-rbd和iscsi;其中,rbd为可靠的自治的分布式对象存储块设备(reliableautoonomicdistributedobjectstoreblockdevice),iscsi为因特网小型计算机系统接口(internetsmallcomputersysteminterface)。

s300,将键值数据库redis的数据转发给虚拟存储和目标存储;本申请实施例中,转发模块根据预先设置好的转发规则完成数据的转发。实际情况下可根据需求选择对应的转发规则,转发规则主要有直接透传和高可用写,直接透传用于保证高性能,高可用写用于保证高可靠性。

s400,响应于键值数据库redis的数据写请求,键值数据库redis发出写请求后,控制模块对数据写请求完成虚拟文件系统(virtualfilesystem,vfs)拆分,将拆分后的数据写请求转换为具体的开/闭命令。再将键值数据库redis中的数据写入虚拟存储中,并按照卷映射将键值数据库redis的数据写入目标存储中;若某条数据写入目标存储失败,将虚拟存储中写入的某条数据转发给目标存储,将某条数据重新写入目标存储中。具体地,例如第i条数据写入目标存储失败,则控制模块控制转发模块将虚拟存储中写入的第i条数据转发给目标存储,重新将第i条数据写入目标存储中。

本方法在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照键值数据库发出的数据写请求,将键值数据库的数据同时写入虚拟存储和目标存储中。若写入目标存储失败,则将虚拟存储中写入的数据转发至目标存储中进行重新写入。通过本发明的方案,本发明不会自动跳过对aof文件格式的检测,不会导致键值数据库redis的数据出现丢失,降低了数据丢失的风险;同时,本发明不需要采用工具对aof文件进行修复,大大地提升了维护效率,可以适用更广泛的应用场景。

如图3所示,在一示例性实施例中,解决键值数据库redis文件损坏的方法还包括有:

s500,获取键值数据库redis集群的数据;

s600,在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射;若虚拟存储中包括有键值数据库的卷文件系统,则直接挂载目标存储;若不包括所述卷文件系统,则先对虚拟存储进行格式化,再挂载目标存储。本申请实施例中,通过建立卷映射,将键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。其中,在本申请实施例中,本地存储为装置自带存储,虚拟存储为根据本地存储映射的虚拟磁盘;目标存储为第三方共享存储,第三方共享存储例如包括ceph-rbd和iscsi;其中,rbd为可靠的自治的分布式对象存储块设备(reliableautoonomicdistributedobjectstoreblockdevice),iscsi为因特网小型计算机系统接口(internetsmallcomputersysteminterface)。

s700,将键值数据库redis集群的数据转发给虚拟存储和目标存储;本申请实施例中,转发模块根据预先设置好的转发规则完成数据的转发,实际情况下可根据需求选择对应的转发规则。转发规则主要有直接透传和高可用写,直接透传用于保证高性能,高可用写用于保证高可靠性。如果选择高可用写,则可以将键值数据库集群中某一键值数据库的数据通过网络将数据转发到键值数据库集群中的其他键值数据库中进行缓存。

s800,响应于键值数据库redis集群的数据写请求,键值数据库redis集群发出写请求后,控制模块对数据写请求完成虚拟文件系统(virtualfilesystem,vfs)拆分,将拆分后的数据写请求转换为具体的开/闭命令。将键值数据库redis集群的数据写入虚拟存储中,并按照卷映射将键值数据库redis集群的数据写入目标存储中;若键值数据库redis集群中某一键值数据库redis的数据写入目标存储失败,将虚拟存储中写入的键值数据库redis集群中另一键值数据库redis的数据转发给目标存储,将另一键值数据库redis的数据重新写入目标存储中。具体地,例如第k个键值数据库的数据写入目标存储失败,则控制模块控制转发模块将虚拟存储中写入的第j个键值数据库的数据转发给目标存储,重新将第j个键值数据库的数据写入目标存储中。其中,k≠j,第k个键值数据库和第j个键值数据库属于同一键值数据库集群。

本方法还在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库集群中所有键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照键值数据库集群发出的数据写请求,将键值数据库集群中所有键值数据库的数据同时写入虚拟存储和目标存储中,若某一键值数据库的数据写入目标存储失败,则将虚拟存储中写入的键值数据库redis集群中另一键值数据库redis的数据转发给目标存储中进行重新写入。本方法不会导致键值数据库集群中键值数据库redis的数据出现丢失,降低了数据丢失的风险;同时,本发明不需要采用工具对aof文件进行修复,大大地提升了维护效率,可以适用更广泛的应用场景。

在一些实施例中,还包括检测键值数据库redis中某条数据是否成功写入目标存储;和/或,检测键值数据库redis集群中某一键值数据库redis的数据是否成功写入目标存储。具体地,还包括有:若成功将键值数据库redis的某条数据写入目标存储,清除虚拟存储中写入的某条数据;和/或,若成功将键值数据库redis集群中某一键值数据库redis的数据写入目标存储,清除虚拟存储中写入的某一键值数据库redis的数据。

具体地,若检测单元检测到键值数据库redis中某条数据成功写入目标存储中,则目标存储向控制模块发出第一写入信号,控制模块控制清除单元清除虚拟存储中写入的该条数据,并进行下一条数据的写入。若检测单元检测到键值数据库redis中某条数据写入目标存储失败,则目标存储向控制模块发出第一未写入信号,控制模块控制转发模块将虚拟存储中写入的该条数据转发给目标存储,将该条数据重新写入目标存储中。

若检测单元检测到键值数据库redis集群中某一键值数据库redis的数据成功写入目标存储,则目标存储向控制模块发出第二写入信号,控制模块控制清除单元清除虚拟存储中写入的某一键值数据库redis的数据,并进行下一键值数据库的数据的写入。键值数据库集群中的每个键值数据库相互发送心跳信息,若检测单元检测到键值数据库redis集群中超过一半的键值数据库未收到某一键值数据库的心跳信息,则认定键值数据库redis集群中某一键值数据库redis的数据写入目标存储失败,则目标存储向控制模块发出第二未写入信号,控制模块控制转发模块将虚拟存储中写入的键值数据库redis集群中另一键值数据库redis的数据转发给目标存储,将另一键值数据库redis的数据重新写入目标存储中。

综上所述,本方法在本地存储中映射虚拟存储,建立虚拟存储与目标存储的卷映射,通过建立卷映射,将键值数据库的数据和/或键值数据库集群中键值数据库的数据同步到目标存储中,完成数据的持久化,从而保证数据的耐久性。按照发出的数据写请求,将数据同时写入虚拟存储和目标存储中。若将某数据写入目标存储失败,则将虚拟存储中写入的对应数据转发至目标存储中进行重新写入。通过本发明的方案,本方法解决redis持久化文件格式损坏的方法,可以在redis服务提供节点故障的情况下保证aof文件的完整性。不仅较现有方法相比稳定性得到了增强,有效降低了数据丢失的风险;而且本发明还避免了采用redis-check-aof工具进行修复,大大提升了维护效率,从而可以适用于更广泛的应用场景。

本申请实施例还提供了一种设备,该设备可以包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述设备执行图2和图3所述的方法。在实际应用中,该设备可以作为终端设备,也可以作为服务器,终端设备的例子可以包括:智能手机、平板电脑、电子书阅读器、mp3(动态影像专家压缩标准语音层面3,movingpictureexpertsgroupaudiolayeriii)播放器、mp4(动态影像专家压缩标准语音层面4,movingpictureexpertsgroupaudiolayeriv)播放器、膝上型便携计算机、车载电脑、台式计算机、机顶盒、智能电视机、可穿戴设备等等,本申请实施例对于具体的设备不加以限制。

本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例的图2和图3中方法所包含步骤的指令(instructions)。

图4为本申请一实施例提供的终端设备的硬件结构示意图。如图所示,该终端设备可以包括:输入设备1100、第一处理器1101、输出设备1102、第一存储器1103和至少一个通信总线1104。通信总线1104用于实现元件之间的通信连接。第一存储器1103可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,第一存储器1103中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。

可选的,上述第一处理器1101例如可以为中央处理器(centralprocessingunit,简称cpu)、应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,该第一处理器1101通过有线或无线连接耦合到上述输入设备1100和输出设备1102。

可选的,上述输入设备1100可以包括多种输入设备,例如可以包括面向用户的用户接口、面向设备的设备接口、软件的可编程接口、摄像头、传感器中至少一种。可选的,该面向设备的设备接口可以是用于设备与设备之间进行数据传输的有线接口、还可以是用于设备与设备之间进行数据传输的硬件插入接口(例如usb接口、串口等);可选的,该面向用户的用户接口例如可以是面向用户的控制按键、用于接收语音输入的语音输入设备以及用户接收用户触摸输入的触摸感知设备(例如具有触摸感应功能的触摸屏、触控板等);可选的,上述软件的可编程接口例如可以是供用户编辑或者修改程序的入口,例如芯片的输入引脚接口或者输入接口等;输出设备1102可以包括显示器、音响等输出设备。

在本实施例中,该终端设备的处理器包括用于执行各设备中语音识别装置各模块的功能,具体功能和技术效果参照上述实施例即可,此处不再赘述。

图5为本申请的一个实施例提供的终端设备的硬件结构示意图。图5是对图4在实现过程中的一个具体的实施例。如图所示,本实施例的终端设备可以包括第二处理器1201以及第二存储器1202。

第二处理器1201执行第二存储器1202所存放的计算机程序代码,实现上述实施例中图2和图3所述方法。

第二存储器1202被配置为存储各种类型的数据以支持在终端设备的操作。这些数据的示例包括用于在终端设备上操作的任何应用程序或方法的指令,例如消息,图片,视频等。第二存储器1202可能包含随机存取存储器(randomaccessmemory,简称ram),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

可选地,第二处理器1201设置在处理组件1200中。该终端设备还可以包括:通信组件1203,电源组件1204,多媒体组件1205,语音组件1206,输入/输出接口1207和/或传感器组件1208。终端设备具体所包含的组件等依据实际需求设定,本实施例对此不作限定。

处理组件1200通常控制终端设备的整体操作。处理组件1200可以包括一个或多个第二处理器1201来执行指令,以完成上述数据处理方法中的全部或部分步骤。此外,处理组件1200可以包括一个或多个模块,便于处理组件1200和其他组件之间的交互。例如,处理组件1200可以包括多媒体模块,以方便多媒体组件1205和处理组件1200之间的交互。

电源组件1204为终端设备的各种组件提供电力。电源组件1204可以包括电源管理系统,一个或多个电源,及其他与为终端设备生成、管理和分配电力相关联的组件。

多媒体组件1205包括在终端设备和用户之间的提供一个输出接口的显示屏。在一些实施例中,显示屏可以包括液晶显示器(lcd)和触摸面板(tp)。如果显示屏包括触摸面板,显示屏可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

语音组件1206被配置为输出和/或输入语音信号。例如,语音组件1206包括一个麦克风(mic),当终端设备处于操作模式,如语音识别模式时,麦克风被配置为接收外部语音信号。所接收的语音信号可以被进一步存储在第二存储器1202或经由通信组件1203发送。在一些实施例中,语音组件1206还包括一个扬声器,用于输出语音信号。

输入/输出接口1207为处理组件1200和外围接口模块之间提供接口,上述外围接口模块可以是点击轮,按钮等。这些按钮可包括但不限于:音量按钮、启动按钮和锁定按钮。

传感器组件1208包括一个或多个传感器,用于为终端设备提供各个方面的状态评估。例如,传感器组件1208可以检测到终端设备的打开/关闭状态,组件的相对定位,用户与终端设备接触的存在或不存在。传感器组件1208可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在,包括检测用户与终端设备间的距离。在一些实施例中,该传感器组件1208还可以包括摄像头等。

通信组件1203被配置为便于终端设备和其他设备之间有线或无线方式的通信。终端设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个实施例中,该终端设备中可以包括sim卡插槽,该sim卡插槽用于插入sim卡,使得终端设备可以登录gprs网络,通过互联网与服务器建立通信。

由上可知,在图5实施例中所涉及的通信组件1203、语音组件1206以及输入/输出接口1207、传感器组件1208均可以作为图4实施例中的输入设备的实现方式。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1