CN111309707B - 数据处理方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据处理方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111309707B CN111309707B CN202010076772.9A CN202010076772A CN111309707B CN 111309707 B CN111309707 B CN 111309707B CN 202010076772 A CN202010076772 A CN 202010076772A CN 111309707 B CN111309707 B CN 111309707B
- Authority
- CN
- China
- Prior art keywords
- target
- information
- assignment
- current
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据处理方法、装置、电子设备及计算机可读存储介质,所述方法包括:接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息;获取所述赋值信息;根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息。该技术方案无需依赖redis的lua脚本和事务特性,也无需与redis进行多次交互,因此适用性较强,同时,还能够有效避免性能的损失。
Description
技术领域
本发明实施例涉及数据处理技术领域,具体涉及一种数据处理方法、装置、电子设备及计算机可读存储介质。
背景技术
随着数据技术的发展,对于数据存储的需求也越来越多,比如在Redis数据存储系统中,业务需要为一个hash(哈希)存储结构中的某个字段field单独设置过期时间,比如,若一个用户代表一个hash结构,用户的每次签到代表一个field,每次签到都存在一个有效期,这就需要为每个field单独设置过期时间,当某个field过期就代表该次签到失效,相应的数据会被自动从hash中删除,最终通过统计hash的长度,就可以得到该用户当前有效签到的次数。现有技术中,通常通过将一个field的过期时间单独写入一个Redis的zset数据结构中,然后内部启动一个异步线程去周期性的检测该过期时间,一旦发现该field过期,就调用hdel删除命令从hash中删除这个field,来实现为field设置单独的过期时间。上述方案虽然能够实现为filed单独设置过期时间,但是其严重依赖redis的lua脚本和事务特性,因此适用性较差,另外,上述方案需要与redis进行多次交互,进而会带来性能的损失。
发明内容
本发明实施例提供一种数据处理方法、装置、电子设备及计算机可读存储介质。
第一方面,本发明实施例中提供了一种数据处理方法。
具体的,所述数据处理方法,包括:
接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
获取所述赋值信息;
根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息。
结合第一方面,本发明实施例在第一方面的第一种实现方式中,所述目标附加信息还包括目标版本信息。
结合第一方面和第一方面的第一种实现方式,本发明实施例在第一方面的第二种实现方式中,所述根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,被实施为:
根据所述赋值目标数据库标识信息确定赋值目标数据库;
在所述赋值目标数据库中查找所述赋值目标子键值和赋值目标字段信息;
当所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息时,根据所述赋值目标子键值和赋值目标字段信息创建目标子键值和目标字段,并将所述目标内容值写入至所述目标字段中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,比较所述目标版本信息与所述当前版本信息,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,当所述目标版本信息与所述当前版本信息不相同时,返回赋值错误消息。
结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述将所述当前超时信息替换为所述目标超时信息,被实施为:
将所述目标超时信息转换为目标超时时间,并使用所述目标超时时间替换所述当前超时信息。
结合第一方面的第一种实现方式、第一方面的第二种实现方式和第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,还包括:
响应于接收到数据获取请求,获取所述数据获取请求携带的获取信息,并根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,其中,所述获取信息包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式和第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,所述根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,被实施为:
根据所述获取目标数据库标识信息确定获取目标数据库;
在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式和第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息,被实施为:
在所述获取目标数据库中查找所述获取目标字段;
当所述获取目标数据库中不存在所述获取目标字段时,返回数据不存在消息;
当所述获取目标数据库中存在所述获取目标字段时,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息;
若所述当前超时信息为预设超时信息,返回所述获取目标内容值;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,删除所述获取目标数据库中的获取目标字段,并返回数据已过期消息;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,返回与所述获取目标字段对应的获取目标内容值。
第二方面,本发明实施例中提供了一种数据处理装置。
具体的,所述数据处理装置,包括:
接收模块,接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
获取模块,被配置为获取所述赋值信息;
执行模块,被配置为根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息。
结合第二方面,本发明实施例在第二方面的第一种实现方式中,所述目标附加信息还包括目标版本信息。
结合第二方面和第二方面的第一种实现方式,本发明实施例在第二方面的第二种实现方式中,所述执行模块被配置为:
根据所述赋值目标数据库标识信息确定赋值目标数据库;
在所述赋值目标数据库中查找所述赋值目标子键值和赋值目标字段信息;
当所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息时,根据所述赋值目标子键值和赋值目标字段信息创建目标子键值和目标字段,并将所述目标内容值写入至所述目标字段中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,比较所述目标版本信息与所述当前版本信息,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,当所述目标版本信息与所述当前版本信息不相同时,返回赋值错误消息。
结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述将所述当前超时信息替换为所述目标超时信息的部分,被配置为:
将所述目标超时信息转换为目标超时时间,并使用所述目标超时时间替换所述当前超时信息。
结合第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,还包括:
数据获取模块,被配置为响应于接收到数据获取请求,获取所述数据获取请求携带的获取信息,并根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,其中,所述获取信息包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式和第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,被实施为:
根据所述获取目标数据库标识信息确定获取目标数据库;
在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式和第二方面的第五种实现方式,本公开在第二方面的第六种实现方式中,所述在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息的部分,被实施为:
在所述获取目标数据库中查找所述获取目标字段;
当所述获取目标数据库中不存在所述获取目标字段时,返回数据不存在消息;
当所述获取目标数据库中存在所述获取目标字段时,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息;
若所述当前超时信息为预设超时信息,返回所述获取目标内容值;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,删除所述获取目标数据库中的获取目标字段,并返回数据已过期消息;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,返回与所述获取目标字段对应的获取目标内容值。
第三方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持数据处理装置执行上述数据处理方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述数据处理装置还可以包括通信接口,用于数据处理装置与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储数据处理装置所用的计算机指令,其包含用于执行上述数据处理方法为数据处理装置所涉及的计算机指令。
本发明实施例提供的技术方案可包括以下有益效果:
上述技术方案通过为Redis数据存储系统hash存储结构中的字段field对应的value内容值设置过期时间和/或版本信息等附加信息来实现对于数据的单独控制。该技术方案由于是在value内容值层面上进行的附加信息维度设置,无需依赖redis的lua脚本和事务特性,也无需与redis进行多次交互,因此适用性较强,同时,还能够有效避免性能的损失。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本发明实施例的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本发明一实施方式的数据处理方法的流程图;
图2为根据本公开一实施方式的数据处理方法的数据赋值流程图;
图3为根据本公开一实施方式的数据处理方法的数据获取流程图;
图4示出根据本发明一实施方式的数据处理装置的结构框图;
图5是适于用来实现根据本发明一实施方式的数据处理方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本发明实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本发明实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明实施例。
本发明实施例提供的技术方案通过为Redis数据存储系统hash存储结构中的字段field对应的value内容值设置过期时间和/或版本信息等附加信息来实现对于数据的单独控制。该技术方案由于是在value内容值层面上进行的附加信息维度设置,无需依赖redis的lua脚本和事务特性,也无需与redis进行多次交互,因此适用性较强,同时,还能够有效避免性能的损失。
图1示出根据本发明一实施方式的数据处理方法的流程图,适用于数据处理服务器,如图1所示,所述数据处理方法包括以下步骤S101-S103:
在步骤S101中,接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
在步骤S102中,获取所述赋值信息;
在步骤S103中,根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息。
上文提及,随着数据技术的发展,对于数据存储的需求也越来越多,比如在Redis数据存储系统中,业务需要为一个hash(哈希)存储结构中的某个字段field单独设置过期时间,比如,若一个用户代表一个hash结构,用户的每次签到代表一个field,每次签到都存在一个有效期,这就需要为每个field单独设置过期时间,当某个field过期就代表该次签到失效,相应的数据会被自动从hash中删除,最终通过统计hash的长度,就可以得到该用户当前有效签到的次数。现有技术中,通常通过将一个field的过期时间单独写入一个Redis的zset数据结构中,然后内部启动一个异步线程去周期性的检测该过期时间,一旦发现该field过期,就调用hdel删除命令从hash中删除这个field,来实现为field设置单独的过期时间。上述方案虽然能够实现为filed单独设置过期时间,但是其严重依赖redis的lua脚本和事务特性,因此适用性较差,另外,上述方案需要与redis进行多次交互,进而会带来性能的损失。
考虑到上述问题,在该实施方式中,提出一种数据处理方法,该方法通过为Redis数据存储系统hash存储结构中的字段field对应的value内容值设置过期时间和/或版本信息等附加信息来实现对于数据的单独控制。该技术方案由于是在value内容值层面上进行的附加信息维度设置,无需依赖redis的lua脚本和事务特性,也无需与redis进行多次交互,因此适用性较强,同时,还能够有效避免性能的损失。
在本发明一实施方式中,所述数据处理方法适用于双层key-value(键-值)结构数据的应用场景,在该应用场景中,具有主key和子key,而所述数据处理方法主要用于对于子key数据进行处理。
在本发明一实施方式中,所述数据赋值请求指的是用于使得所述数据处理服务器执行与所述数据赋值请求相应的数据赋值操作的请求。所述数据赋值请求是由数据赋值请求方发出的,其中,所述数据赋值请求方既可以为用户,还可以为某一应用,再或者也可以为其他能够发出数据赋值请求的主体,比如某一客户端等等,本发明对其不作具体限定。
在本发明一实施方式中,所述赋值信息用于表征数据赋值请求方的数据赋值要求,以使所述数据处理服务器能够根据所述赋值信息进行数据赋值操作。
其中,所述赋值信息可包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,其中,所述赋值目标数据库标识信息指的是用于对于将要进行赋值操作的数据库进行区别性标识的信息,比如可以为将要进行赋值操作的数据库的名称或ID等等;所述赋值目标子键值指的是将要进行赋值操作的子键值信息;所述赋值目标字段信息指的是将要进行赋值操作的字段信息;所述目标内容值指的是将要进行赋值操作的字段所对应的内容值,即将要写入至所述赋值目标数据库中的内容值;所述目标附加信息指的是与所述目标内容值对应的、与所述目标内容值相关的、相比现有技术新增的信息,在本发明一实施方式中,所述目标附加信息可包括目标超时信息,在本发明另一实施方式中,所述目标附加信息还可包括目标版本信息,当然,所述目标附加信息还可包括更多类型的附加信息,所述目标附加信息的具体内容可根据实际应用的需要进行设置,本公开对其不作具体限定。
在获取得到所述赋值信息之后,所述数据处理服务器就可以根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行与所述赋值信息相应的数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息,在执行了数据赋值操作之后,所得到的目标数据也对应存储有附加信息,以对所述目标数据进行附加解释、描述或限制。
为了描述的方便,接下来以超时附加信息和版本附加信息作为目标附加信息为例对于本公开进行解释和说明。需要说明的是,所述超时附加信息和版本附加信息既可以分开存储在与内容值对应的位置处,也可以合并存储在与内容值对应的位置处,以节省存储空间,另外,根据实际应用的需要,也可以将所述超时附加信息和版本附加信息分别以一个键值的形式存储在Redis中,总之,所述超时附加信息和版本附加信息的存储方式和存储位置可根据实际应用的需要进行选择和确定,本公开对其不作具体限制。
在本发明一实施方式中,所述步骤S103,即根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作的步骤,可被实施为:
根据所述赋值目标数据库标识信息确定赋值目标数据库;
在所述赋值目标数据库中查找所述赋值目标子键值和赋值目标字段信息;
当所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息时,根据所述赋值目标子键值和赋值目标字段信息创建目标子键值和目标字段,并将所述目标内容值写入至所述目标字段中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,比较所述目标版本信息与所述当前版本信息,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,当所述目标版本信息与所述当前版本信息不相同时,返回赋值错误消息。
在该实施方式中,在根据所述赋值信息在所述赋值目标数据库中执行数据赋值操作时,首先根据所述赋值信息中的赋值目标数据库标识信息确定将要进行数据赋值操作的赋值目标数据库;然后在所述赋值目标数据库中根据所述赋值信息中的赋值目标子键值和赋值目标字段信息进行查找,查找结果存在以下几种情况:
A.所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息,那么就需要根据所述赋值信息中的赋值目标子键值和赋值目标字段信息在所述赋值目标数据库中创建目标子键值和目标字段,然后再将所述目标内容值写入至所述目标字段对应的位置中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息,比如,若所述目标内容值为ex(秒级别相对超时时间)/exat(秒级别绝对超时时间)/px(毫秒级别相对超时时间)/pxat(毫秒级别绝对超时时间)等参数,则需要为其设置超时附加信息,若所述目标内容值为ver(版本)等参数,则需要为其设置版本附加信息,其中,所述初始附加信息可以为本领域技术人员预先设置的初始附加信息,比如0等等。
B.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息,这说明所述赋值目标字段对应的目标内容值无需新设置超时附加信息,此时可获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,直接将所述当前内容值替换为所述目标内容值即可。
C.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息,这说明所述赋值目标字段对应的目标内容值需要新设置超时附加信息,此时可获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,分别将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息,在本发明一实施方式中,所述将所述当前超时信息替换为所述目标超时信息,可被实施为:将所述目标超时信息转换为目标超时时间,比如2019年12月1日8:00,并使用所述目标超时时间替换所述当前超时信息,时间转换之后就可很方便地与当前时间进行比较以确定相应的数据是否已超时或超期。
D.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息,其中,所述预设版本信息为本领域技术人员预先设置的版本信息,比如其可以为0或其他值,所述目标版本信息的缺失以及预设版本信息的设置说明无需对于所述目标内容值对应的版本附加信息进行校验即可进行内容值的修改,此时可直接获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并在替换之后对于所述内容值对应的当前版本信息进行递进更新,比如,在替换前的版本信息的基础上增加一更新递进值,例如,若替换前的版本信息为2,更新递进值为1,则替换之后的版本信息可变为2+1=3。
E.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息,这说明需要对于所述目标内容值对应的版本附加信息进行校验,校验通过之后才可进行内容值的修改,比如当所述目标版本信息与所述赋值目标字段信息对应的当前内容值对应的当前版本信息一致时,才可对内容值进行修改,此时先获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,然后对于所述目标版本信息与所述当前版本信息进行比较,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,若所述目标版本信息与所述当前版本信息不相同,则返回赋值错误消息,其中,所述赋值错误消息还可携带有赋值错误原因。
在本发明一实施方式中,所述方法还包括根据接收到的数据获取请求获取数据的步骤,即所述数据处理方法包括以下步骤:
接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
获取所述赋值信息;
根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息;
响应于接收到数据获取请求,获取所述数据获取请求携带的获取信息,并根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,其中,所述获取信息包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息。
在本发明一实施方式中,所述数据获取请求指的是用于使得所述数据处理服务器执行与所述数据获取请求相应的数据获取操作的请求。所述数据获取请求是由数据获取请求方发出的,其中,所述数据获取请求方既可以为用户,还可以为某一应用,再或者也可以为其他能够发出数据获取请求的主体,比如某一客户端等等,本发明对其不作具体限定。
在本发明一实施方式中,所述获取信息用于表征数据获取请求方的数据获取要求,以使所述数据处理服务器能够根据所述获取信息进行数据获取操作。
其中,所述获取信息可包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息,其中,所述获取目标数据库标识信息指的是用于对于将要进行数据获取操作的数据库进行区别性标识的信息,比如可以为将要进行数据获取操作的数据库的名称或ID等等;所述获取目标子键值指的是将要进行数据获取操作的子键值信息;所述获取目标字段信息指的是将要进行数据获取操作的字段信息。
在本发明一实施方式中,所述根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息的步骤,可被实施为:
根据所述获取目标数据库标识信息确定获取目标数据库;
在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息。
在该实施方式中,在接收到数据获取请求,并获取得到所述数据获取请求携带的获取信息之后,就可以根据所述获取信息中的获取目标数据库标识信息确定对应的获取目标数据库,然后在所述获取目标数据库中执行与所述获取信息相应的数据获取操作,最后将获取得到的目标数据返回给所述数据获取请求方,若未获取到所述数据获取请求方想要的数据,则向所述数据获取请求方发送相应的消息。
在本发明一实施方式中,所述在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息,可被实施为:
在所述获取目标数据库中查找所述获取目标字段;
当所述获取目标数据库中不存在所述获取目标字段时,返回数据不存在消息;
当所述获取目标数据库中存在所述获取目标字段时,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息;
若所述当前超时信息为预设超时信息,返回所述获取目标内容值;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,删除所述获取目标数据库中的获取目标字段,并返回数据已过期消息;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,返回与所述获取目标字段对应的获取目标内容值。
在该实施方式中,在根据所述获取信息执行数据获取操作时,首先根据所述获取信息中的获取目标数据库标识信息确定将要进行数据获取操作的获取目标数据库;然后在所述获取目标数据库中根据所述获取信息中的获取目标子键值和获取目标字段信息进行查找,查找结果存在以下几种情况:
F.所述获取目标数据库中不存在所述获取目标字段,意味着所述获取目标数据库中未存储有所述获取目标字段对应的内容值,则向所述数据获取请求方返回数据不存在消息;
G.所述获取目标数据库中存在所述获取目标字段,则获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息,此时,又存在以下几种情况:
G1.所述当前超时信息为预设超时信息,其中,所述预设超时信息为本领域技术人员预先设置的超时信息,比如其可以为0或其他值,其用于表征所述获取目标内容值没有超时的限制,此时可直接将所述获取目标内容值返回给所述数据获取请求方;
G2.所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,说明所述获取目标字段对应的内容值已不可用,此时需要删除所述获取目标数据库中的获取目标字段及其对应的内容值,并向所述数据获取请求方返回数据已过期消息;
G3.所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,说明所述获取目标字段对应的内容值是有效的,则将所述获取目标内容值返回给所述数据获取请求方。
图2为根据本公开一实施方式的数据处理方法的数据赋值流程图,如图2所示,在执行数据赋值操作时,首先获取数据赋值请求中携带的赋值信息,然后在根据赋值目标数据库标识信息确定的赋值目标数据库中查找赋值目标子键值和赋值目标字段信息,若所述赋值目标子键值和赋值目标字段信息不存在,则创建目标子键值和目标字段,写入目标内容值,为目标内容值设置初始附加信息0;若所述赋值目标子键值和赋值目标字段信息存在,则获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息和/或当前版本信息,若所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息0,则将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;若所述赋值信息中包括非预设版本信息的目标版本信息,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,若所述目标版本信息与所述当前版本信息不相同,返回版本错误消息,若所述目标版本信息与所述当前版本信息相同,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新。然后检测所述赋值信息中是否包括目标超时信息,若不包括,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,若包括,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息。
图3为根据本公开一实施方式的数据处理方法的数据获取流程图,如图3所示,在执行数据获取操作时,首先获取数据获取请求中携带的获取信息,然后在根据获取目标数据库标识信息确定的获取目标数据库中查找获取目标字段信息,若不存在,向所述数据获取请求方返回数据不存在消息,若存在,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息,若所述当前超时信息不为预设超时信息0,比较所述当前超时信息与当前时间判断是否已超时,若超时,删除所述获取目标数据库中的获取目标字段,并向所述数据获取请求方返回数据已过期消息,若未超时,则向所述数据获取请求方返回与所述获取目标字段对应的获取目标内容值。
上述技术方案通过直接在field对应的value数据结构中内置超时信息和版本信息,来实现field对应过期时间和版本信息的单独设置,进而实现在数据的读写过程中直接在redis内部完成对过期时间和版本信息的检查和判断,上述请求本身是原子的,因此可以不依赖redis的lua脚本和事务特性,同时数据读写过程中上述数据处理服务器和redis只需要一次交互通信,进而能够大大提高性能。另外,上述技术方案不依赖客户端实现,因此可以应用于任何语言的redis客户端。
下述为本发明装置实施例,可以用于执行本发明方法实施例。
图4示出根据本发明一实施方式的数据处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,可实现为数据处理服务器。如图4所示,所述数据处理装置包括:
接收模块401,被配置为接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
获取模块402,被配置为获取所述赋值信息;
执行模块403,被配置为根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息。
上文提及,随着数据技术的发展,对于数据存储的需求也越来越多,比如在Redis数据存储系统中,业务需要为一个hash(哈希)存储结构中的某个字段field单独设置过期时间,比如,若一个用户代表一个hash结构,用户的每次签到代表一个field,每次签到都存在一个有效期,这就需要为每个field单独设置过期时间,当某个field过期就代表该次签到失效,相应的数据会被自动从hash中删除,最终通过统计hash的长度,就可以得到该用户当前有效签到的次数。现有技术中,通常通过将一个field的过期时间单独写入一个Redis的zset数据结构中,然后内部启动一个异步线程去周期性的检测该过期时间,一旦发现该field过期,就调用hdel删除命令从hash中删除这个field,来实现为field设置单独的过期时间。上述方案虽然能够实现为filed单独设置过期时间,但是其严重依赖redis的lua脚本和事务特性,因此适用性较差,另外,上述方案需要与redis进行多次交互,进而会带来性能的损失。
考虑到上述问题,在该实施方式中,提出一种数据处理装置,该装置通过为Redis数据存储系统hash存储结构中的字段field对应的value内容值设置过期时间和/或版本信息等附加信息来实现对于数据的单独控制。该技术方案由于是在value内容值层面上进行的附加信息维度设置,无需依赖redis的lua脚本和事务特性,也无需与redis进行多次交互,因此适用性较强,同时,还能够有效避免性能的损失。
在本发明一实施方式中,所述数据处理装置适用于双层key-value(键-值)结构数据的应用场景,在该应用场景中,具有主key和子key,而所述数据处理装置主要用于对于子key数据进行处理。
在本发明一实施方式中,所述数据赋值请求指的是用于使得所述数据处理服务器执行与所述数据赋值请求相应的数据赋值操作的请求。所述数据赋值请求是由数据赋值请求方发出的,其中,所述数据赋值请求方既可以为用户,还可以为某一应用,再或者也可以为其他能够发出数据赋值请求的主体,比如某一客户端等等,本发明对其不作具体限定。
在本发明一实施方式中,所述赋值信息用于表征数据赋值请求方的数据赋值要求,以使所述数据处理服务器能够根据所述赋值信息进行数据赋值操作。
其中,所述赋值信息可包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,其中,所述赋值目标数据库标识信息指的是用于对于将要进行赋值操作的数据库进行区别性标识的信息,比如可以为将要进行赋值操作的数据库的名称或ID等等;所述赋值目标子键值指的是将要进行赋值操作的子键值信息;所述赋值目标字段信息指的是将要进行赋值操作的字段信息;所述目标内容值指的是将要进行赋值操作的字段所对应的内容值,即将要写入至所述赋值目标数据库中的内容值;所述目标附加信息指的是与所述目标内容值对应的、与所述目标内容值相关的、相比现有技术新增的信息,在本发明一实施方式中,所述目标附加信息可包括目标超时信息,在本发明另一实施方式中,所述目标附加信息还可包括目标版本信息,当然,所述目标附加信息还可包括更多类型的附加信息,所述目标附加信息的具体内容可根据实际应用的需要进行设置,本公开对其不作具体限定。
在获取得到所述赋值信息之后,所述数据处理服务器就可以根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行与所述赋值信息相应的数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息,在执行了数据赋值操作之后,所得到的目标数据也对应存储有附加信息,以对所述目标数据进行附加解释、描述或限制。
为了描述的方便,接下来以超时附加信息和版本附加信息作为目标附加信息为例对于本公开进行解释和说明,即在本发明一实施方式中,所述超时附加信息和版本附加信息既可以分开存储在与内容值对应的位置处,也可以合并存储在与内容值对应的位置处,以节省存储空间,另外,根据实际应用的需要,也可以将所述超时附加信息和版本附加信息分别以一个键值的形式存储在Redis中,总之,所述超时附加信息和版本附加信息的存储方式和存储位置可根据实际应用的需要进行选择和确定,本公开对其不作具体限制。
在本发明一实施方式中,所述执行模块403可被配置为:
根据所述赋值目标数据库标识信息确定赋值目标数据库;
在所述赋值目标数据库中查找所述赋值目标子键值和赋值目标字段信息;
当所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息时,根据所述赋值目标子键值和赋值目标字段信息创建目标子键值和目标字段,并将所述目标内容值写入至所述目标字段中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,比较所述目标版本信息与所述当前版本信息,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,当所述目标版本信息与所述当前版本信息不相同时,返回赋值错误消息。
在该实施方式中,在根据所述赋值信息在所述赋值目标数据库中执行数据赋值操作时,首先根据所述赋值信息中的赋值目标数据库标识信息确定将要进行数据赋值操作的赋值目标数据库;然后在所述赋值目标数据库中根据所述赋值信息中的赋值目标子键值和赋值目标字段信息进行查找,查找结果存在以下几种情况:
A.所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息,那么就需要根据所述赋值信息中的赋值目标子键值和赋值目标字段信息在所述赋值目标数据库中创建目标子键值和目标字段,然后再将所述目标内容值写入至所述目标字段对应的位置中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息,比如,若所述目标内容值为ex(秒级别相对超时时间)/exat(秒级别绝对超时时间)/px(毫秒级别相对超时时间)/pxat(毫秒级别绝对超时时间)等参数,则需要为其设置超时附加信息,若所述目标内容值为ver(版本)等参数,则需要为其设置版本附加信息,其中,所述初始附加信息可以为本领域技术人员预先设置的初始附加信息,比如0等等。
B.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息,这说明所述赋值目标字段对应的目标内容值无需新设置超时附加信息,此时可获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,直接将所述当前内容值替换为所述目标内容值即可。
C.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息,这说明所述赋值目标字段对应的目标内容值需要新设置超时附加信息,此时可获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,分别将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息,在本发明一实施方式中,所述将所述当前超时信息替换为所述目标超时信息,可被实施为:将所述目标超时信息转换为目标超时时间,比如2019年12月1日8:00,并使用所述目标超时时间替换所述当前超时信息,时间转换之后就可很方便地与当前时间进行比较以确定相应的数据是否已超时或超期。
D.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息,其中,所述预设版本信息为本领域技术人员预先设置的版本信息,比如其可以为0或其他值,所述目标版本信息的缺失以及预设版本信息的设置说明无需对于所述目标内容值对应的版本附加信息进行校验即可进行内容值的修改,此时可直接获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并在替换之后对于所述内容值对应的当前版本信息进行递进更新,比如,在替换前的版本信息的基础上增加一更新递进值,例如,若替换前的版本信息为2,更新递进值为1,则替换之后的版本信息可变为2+1=3。
E.所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息,这说明需要对于所述目标内容值对应的版本附加信息进行校验,校验通过之后才可进行内容值的修改,比如当所述目标版本信息与所述赋值目标字段信息对应的当前内容值对应的当前版本信息一致时,才可对内容值进行修改,此时先获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,然后对于所述目标版本信息与所述当前版本信息进行比较,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,若所述目标版本信息与所述当前版本信息不相同,则返回赋值错误消息,其中,所述赋值错误消息还可携带有赋值错误原因。
在本发明一实施方式中,所述装置还包括根据接收到的数据获取请求获取数据的部分,即所述数据处理装置包括:
接收模块,被配置为接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,其中,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,其中,所述目标附加信息包括目标超时信息;
获取模块,被配置为获取所述赋值信息;
执行模块,被配置为根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息;
数据获取模块,被配置为响应于接收到数据获取请求,获取所述数据获取请求携带的获取信息,并根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,其中,所述获取信息包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息。
在本发明一实施方式中,所述数据获取请求指的是用于使得所述数据处理服务器执行与所述数据获取请求相应的数据获取操作的请求。所述数据获取请求是由数据获取请求方发出的,其中,所述数据获取请求方既可以为用户,还可以为某一应用,再或者也可以为其他能够发出数据获取请求的主体,比如某一客户端等等,本发明对其不作具体限定。
在本发明一实施方式中,所述获取信息用于表征数据获取请求方的数据获取要求,以使所述数据处理服务器能够根据所述获取信息进行数据获取操作。
其中,所述获取信息可包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息,其中,所述获取目标数据库标识信息指的是用于对于将要进行数据获取操作的数据库进行区别性标识的信息,比如可以为将要进行数据获取操作的数据库的名称或ID等等;所述获取目标子键值指的是将要进行数据获取操作的子键值信息;所述获取目标字段信息指的是将要进行数据获取操作的字段信息。
在本发明一实施方式中,所述根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息的部分,可被配置为:
根据所述获取目标数据库标识信息确定获取目标数据库;
在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息。
在该实施方式中,在接收到数据获取请求,并获取得到所述数据获取请求携带的获取信息之后,就可以根据所述获取信息中的获取目标数据库标识信息确定对应的获取目标数据库,然后在所述获取目标数据库中执行与所述获取信息相应的数据获取操作,最后将获取得到的目标数据返回给所述数据获取请求方,若未获取到所述数据获取请求方想要的数据,则向所述数据获取请求方发送相应的消息。
在本发明一实施方式中,所述在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息的部分,可被配置为:
在所述获取目标数据库中查找所述获取目标字段;
当所述获取目标数据库中不存在所述获取目标字段时,返回数据不存在消息;
当所述获取目标数据库中存在所述获取目标字段时,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息;
若所述当前超时信息为预设超时信息,返回所述获取目标内容值;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,删除所述获取目标数据库中的获取目标字段,并返回数据已过期消息;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,返回与所述获取目标字段对应的获取目标内容值。
在该实施方式中,在根据所述获取信息执行数据获取操作时,首先根据所述获取信息中的获取目标数据库标识信息确定将要进行数据获取操作的获取目标数据库;然后在所述获取目标数据库中根据所述获取信息中的获取目标子键值和获取目标字段信息进行查找,查找结果存在以下几种情况:
F.所述获取目标数据库中不存在所述获取目标字段,意味着所述获取目标数据库中未存储有所述获取目标字段对应的内容值,则向所述数据获取请求方返回数据不存在消息;
G.所述获取目标数据库中存在所述获取目标字段,则获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息,此时,又存在以下几种情况:
G1.所述当前超时信息为预设超时信息,其中,所述预设超时信息为本领域技术人员预先设置的超时信息,比如其可以为0或其他值,其用于表征所述获取目标内容值没有超时的限制,此时可直接将所述获取目标内容值返回给所述数据获取请求方;
G2.所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,说明所述获取目标字段对应的内容值已不可用,此时需要删除所述获取目标数据库中的获取目标字段及其对应的内容值,并向所述数据获取请求方返回数据已过期消息;
G3.所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,说明所述获取目标字段对应的内容值是有效的,则将所述获取目标内容值返回给所述数据获取请求方。
本发明实施例还公开了一种电子设备,所述电子设备包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现上述任一方法步骤。
图5适于用来实现根据本发明实施方式的数据处理方法的计算机系统的结构示意图。
如图5所示,计算机系统500包括处理单元501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行上述实施方式中的各种处理。在RAM503中,还存储有系统500操作所需的各种程序和数据。处理单元501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。其中,所述处理单元501可实现为CPU、GPU、FPGA、NPU等处理单元。
特别地,根据本发明的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本发明的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述数据处理方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本发明实施例的方法。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (16)
1.一种数据处理方法,适用于数据处理服务器,包括:
接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
获取所述赋值信息;
根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息;
其中,所述根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,被实施为:
根据所述赋值目标数据库标识信息确定赋值目标数据库;
在所述赋值目标数据库中查找所述赋值目标子键值和赋值目标字段信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,比较所述目标版本信息与所述当前版本信息,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,当所述目标版本信息与所述当前版本信息不相同时,返回赋值错误消息。
2.根据权利要求1所述的方法,其特征在于,所述目标附加信息还包括目标版本信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,还被实施为:
当所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息时,根据所述赋值目标子键值和赋值目标字段信息创建目标子键值和目标字段,并将所述目标内容值写入至所述目标字段中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息。
4.根据权利要求3所述的方法,其特征在于,所述将所述当前超时信息替换为所述目标超时信息,被实施为:
将所述目标超时信息转换为目标超时时间,并使用所述目标超时时间替换所述当前超时信息。
5.根据权利要求1-4任一所述的方法,其特征在于,还包括:
响应于接收到数据获取请求,获取所述数据获取请求携带的获取信息,并根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,其中,所述获取信息包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,被实施为:
根据所述获取目标数据库标识信息确定获取目标数据库;
在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息。
7.根据权利要求6所述的方法,其特征在于,所述在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息,被实施为:
在所述获取目标数据库中查找所述获取目标字段;
当所述获取目标数据库中不存在所述获取目标字段时,返回数据不存在消息;
当所述获取目标数据库中存在所述获取目标字段时,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息;
若所述当前超时信息为预设超时信息,返回所述获取目标内容值;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,删除所述获取目标数据库中的获取目标字段,并返回数据已过期消息;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,返回与所述获取目标字段对应的获取目标内容值。
8.一种数据处理装置,适用于数据处理服务器,其特征在于,包括:
接收模块,接收数据赋值请求,其中,所述数据赋值请求携带有赋值信息,所述赋值信息包括以下信息中的至少一种:赋值目标数据库标识信息、赋值目标子键值、赋值目标字段信息、与所述赋值目标字段信息对应的目标内容值以及与所述目标内容值对应的目标附加信息,所述目标附加信息包括目标超时信息;
获取模块,被配置为获取所述赋值信息;
执行模块,被配置为根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作,其中,所述赋值目标数据库中存储的内容值对应设置有附加信息;
所述执行模块中根据所述赋值信息在所述赋值目标数据库标识信息对应的赋值目标数据库中执行数据赋值操作的部分被配置为:
根据所述赋值目标数据库标识信息确定赋值目标数据库;
在所述赋值目标数据库中查找所述赋值目标子键值和赋值目标字段信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标版本信息或者所述目标版本信息为预设版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标版本信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前版本信息,比较所述目标版本信息与所述当前版本信息,当所述目标版本信息与所述当前版本信息相同时,将所述当前内容值替换为所述目标内容值,并对所述当前版本信息进行递进更新,当所述目标版本信息与所述当前版本信息不相同时,返回赋值错误消息。
9.根据权利要求8所述的装置,其特征在于,所述目标附加信息还包括目标版本信息。
10.根据权利要求9所述的装置,其特征在于,所述执行模块还被配置为:
当所述赋值目标数据库中不存在所述赋值目标子键值和赋值目标字段信息时,根据所述赋值目标子键值和赋值目标字段信息创建目标子键值和目标字段,并将所述目标内容值写入至所述目标字段中,当根据所述目标内容值确定需要为其设置附加信息时,为所述目标内容值设置初始附加信息;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中不包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值;
当所述赋值目标数据库中存在所述赋值目标子键值和赋值目标字段信息,且所述赋值信息中包括目标超时信息时,获取所述赋值目标字段信息对应的当前内容值以及所述当前内容值对应的当前超时信息,将所述当前内容值替换为所述目标内容值,将所述当前超时信息替换为所述目标超时信息。
11.根据权利要求10所述的装置,其特征在于,所述将所述当前超时信息替换为所述目标超时信息的部分,被配置为:
将所述目标超时信息转换为目标超时时间,并使用所述目标超时时间替换所述当前超时信息。
12.根据权利要求8-11任一所述的装置,其特征在于,还包括:
数据获取模块,被配置为响应于接收到数据获取请求,获取所述数据获取请求携带的获取信息,并根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,其中,所述获取信息包括以下信息中的至少一种:获取目标数据库标识信息、获取目标子键值、获取目标字段信息。
13.根据权利要求12所述的装置,其特征在于,所述根据所述获取信息获取得到相应的目标数据或消息,返回所述目标数据或消息,被实施为:
根据所述获取目标数据库标识信息确定获取目标数据库;
在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息。
14.根据权利要求13所述的装置,其特征在于,所述在所述获取目标数据库中根据所述获取信息获取得到相应的目标数据或消息,并返回所述目标数据或消息的部分,被实施为:
在所述获取目标数据库中查找所述获取目标字段;
当所述获取目标数据库中不存在所述获取目标字段时,返回数据不存在消息;
当所述获取目标数据库中存在所述获取目标字段时,获取与所述获取目标字段对应的获取目标内容值以及与所述获取目标内容值对应的当前超时信息;
若所述当前超时信息为预设超时信息,返回所述获取目标内容值;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段已过期,删除所述获取目标数据库中的获取目标字段,并返回数据已过期消息;
若所述当前超时信息不为所述预设超时信息,且根据所述当前超时信息与当前时间的比较确定所述获取目标字段未过期,返回与所述获取目标字段对应的获取目标内容值。
15.一种电子设备,其特征在于,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-7任一项所述的方法步骤。
16.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-7任一项所述的方法步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010076772.9A CN111309707B (zh) | 2020-01-23 | 2020-01-23 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
PCT/CN2021/072002 WO2021147773A1 (zh) | 2020-01-23 | 2021-01-15 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010076772.9A CN111309707B (zh) | 2020-01-23 | 2020-01-23 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309707A CN111309707A (zh) | 2020-06-19 |
CN111309707B true CN111309707B (zh) | 2022-04-29 |
Family
ID=71148807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010076772.9A Active CN111309707B (zh) | 2020-01-23 | 2020-01-23 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111309707B (zh) |
WO (1) | WO2021147773A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309707B (zh) * | 2020-01-23 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN115827081A (zh) * | 2021-09-16 | 2023-03-21 | 中兴通讯股份有限公司 | 数据操作方法、装置、服务器以及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721502A (zh) * | 2016-04-11 | 2016-06-29 | 上海上实龙创智慧能源科技股份有限公司 | 一种用于浏览器客户端和服务器的授权访问方法 |
CN105824880A (zh) * | 2016-03-09 | 2016-08-03 | 乐视网信息技术(北京)股份有限公司 | 一种网页抓取方法及装置 |
CN107451190A (zh) * | 2017-06-26 | 2017-12-08 | 北京五八信息技术有限公司 | 可持久化非关系型数据库的数据处理方法及装置 |
CN109461312A (zh) * | 2018-12-27 | 2019-03-12 | 泰华智慧产业集团股份有限公司 | 基于redis的过车数据去重方法 |
CN109919623A (zh) * | 2019-02-28 | 2019-06-21 | 泰康保险集团股份有限公司 | 防止账户透支方法、装置、设备及可读存储介质 |
CN110134670A (zh) * | 2019-05-16 | 2019-08-16 | 拉扎斯网络科技(上海)有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526958B (zh) * | 2009-04-09 | 2012-07-04 | 中兴通讯股份有限公司 | 一种iptv系统模块间数据同步的方法及系统 |
US9083770B1 (en) * | 2013-11-26 | 2015-07-14 | Snapchat, Inc. | Method and system for integrating real time communication features in applications |
US20190213283A1 (en) * | 2018-01-08 | 2019-07-11 | Capital One Services, Llc | Systems and methods for personalized browsing |
CN111309707B (zh) * | 2020-01-23 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
-
2020
- 2020-01-23 CN CN202010076772.9A patent/CN111309707B/zh active Active
-
2021
- 2021-01-15 WO PCT/CN2021/072002 patent/WO2021147773A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824880A (zh) * | 2016-03-09 | 2016-08-03 | 乐视网信息技术(北京)股份有限公司 | 一种网页抓取方法及装置 |
CN105721502A (zh) * | 2016-04-11 | 2016-06-29 | 上海上实龙创智慧能源科技股份有限公司 | 一种用于浏览器客户端和服务器的授权访问方法 |
CN107451190A (zh) * | 2017-06-26 | 2017-12-08 | 北京五八信息技术有限公司 | 可持久化非关系型数据库的数据处理方法及装置 |
CN109461312A (zh) * | 2018-12-27 | 2019-03-12 | 泰华智慧产业集团股份有限公司 | 基于redis的过车数据去重方法 |
CN109919623A (zh) * | 2019-02-28 | 2019-06-21 | 泰康保险集团股份有限公司 | 防止账户透支方法、装置、设备及可读存储介质 |
CN110134670A (zh) * | 2019-05-16 | 2019-08-16 | 拉扎斯网络科技(上海)有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
对redis中的field设置过期时间;horse_xiao;《https://blog.csdn.net/horse_xiao/article/details/96588342》;20190720;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111309707A (zh) | 2020-06-19 |
WO2021147773A1 (zh) | 2021-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309707B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN110555078A (zh) | 分布式id生成 | |
EP2469410A2 (en) | System and method for scaling for a large number of concurrent users by storing a user's session state on external storage | |
CN109933585B (zh) | 数据查询方法和数据查询系统 | |
CN110365745B (zh) | 数据处理系统、方法、装置、服务器和计算机可读介质 | |
CN111198751A (zh) | 业务处理方法和装置 | |
WO2018080686A1 (en) | Safe parallelized ingestion of data update messages, such as hl7 messages | |
CN111126948A (zh) | 用于审批流程的处理方法和装置 | |
CN114138447A (zh) | 任务处理方法、装置、设备以及存储介质 | |
CN114090113A (zh) | 数据源处理插件动态加载的方法、装置、设备及存储介质 | |
CN112948498A (zh) | 一种分布式系统全局标识的生成方法和装置 | |
CN110445881B (zh) | 数据传输方法、装置及系统 | |
CN111127088B (zh) | 实现最终一致性的方法、装置、计算机设备及存储介质 | |
CN112925796A (zh) | 一种写一致性控制方法、装置、设备及存储介质 | |
CN108763247B (zh) | 在数据迁移过程中处理用户请求的方法及装置 | |
CN113360689B (zh) | 图像检索系统、方法、相关装置及计算机程序产品 | |
CN110704110B (zh) | 一种提高系统高并发情况下的响应速度的方法和装置 | |
CN112286992B (zh) | 一种查询方法、分布式系统、设备及存储介质 | |
CN108509450B (zh) | 用于处理数据库高并发更新的方法和装置 | |
CN112667726A (zh) | 数据抽取方法、装置、电子设备、存储介质及程序产品 | |
CN108008967B (zh) | 应用程序的版本控制方法及装置、计算机可读存储介质、终端 | |
CN116433127A (zh) | 免责权益管理方法、装置、设备、存储介质及程序产品 | |
CN113792072A (zh) | 数据发送方法、装置、电子设备和计算机可读介质 | |
CN114676165A (zh) | 数据的查询方法、装置、电子设备及计算机可读介质 | |
CN117059247A (zh) | 策略匹配方法、装置、存储介质及计算机设备 |
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 |