CN109241128B - 一种过期事件自动触发方法及系统 - Google Patents

一种过期事件自动触发方法及系统 Download PDF

Info

Publication number
CN109241128B
CN109241128B CN201810779270.5A CN201810779270A CN109241128B CN 109241128 B CN109241128 B CN 109241128B CN 201810779270 A CN201810779270 A CN 201810779270A CN 109241128 B CN109241128 B CN 109241128B
Authority
CN
China
Prior art keywords
expired
key
event
keys
instance
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
Application number
CN201810779270.5A
Other languages
English (en)
Other versions
CN109241128A (zh
Inventor
张健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201810779270.5A priority Critical patent/CN109241128B/zh
Publication of CN109241128A publication Critical patent/CN109241128A/zh
Application granted granted Critical
Publication of CN109241128B publication Critical patent/CN109241128B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Input From Keyboards Or The Like (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种过期事件的自动触发方法及系统,所述方法包括客户端向Redis集群中的各实例写入key并实时设置所述key的过期时间;向Redis集群中的各实例发送过期事件获取命令,以便获取所述各实例返回的过期的key;对所获取的过期的key进行处理,将处理结果发送给对应实例。能够实现对Redis集群分布式环境下的过期事件的处理;过期时间设置简单,失效实时性好。

Description

一种过期事件自动触发方法及系统
【技术领域】
本发明涉及计算机应用技术,特别涉及过期事件自动触发方法及系统。
【背景技术】
随着NoSQL系统在互联网应用中的普及,为了解决业务应用场景下的各种需求,NoSQL功能特性也逐渐丰富完善,其中TTL(time to live)特性在定时开关、缓存更新、锁超时等场景下,很好的解决了业务应用的问题,比如定时优惠、网站数据缓存(如积分排行榜)、消息超时取消、延迟队列、事件生命周期到期反馈等等。在众多自带TTL的系统(如MongoDB、Cassandra、Memcache、RabbitMQ、Redis、CouchBase、Hbase等等)中,都能设置带生命周期的KEY或对象,当元素的生命周期结束时,自动销毁元素,业务可以利用这一特性来设置各种标记。
针对TTL机制,现有的主流系统如:
Redis:支持过期时间设置,通过主动采样和被动访问来淘汰过期的KEY,其采样机制并不能保证覆盖全部的KEY,对于采样未采集到且没有主动访问的过期的key,就会遗留在系统中,因此无法保证实时性。同时,原生的Redis单实例可以利用订阅和keyspace方式实现过期事件的反馈,在分布式环境下无法使用。
Cassandra:Cassandra中TTL的精度单位为秒,且不能设置在column family上,只能设置在column value上,设置复杂,且设置后难以改变。若创建时未带TTL后期也难以设置。对于已设置的TTL,只能通过先读取然后再次插入所有数据,交互多且有数据访问。所以Cassandra的TTL操作复杂,更新成本高,且无TTL事件反馈机制。
Hbase:Hbase支持表级别和列簇级别,其定义的超时时间是最后更新时间到超时时间的限制,TTL的概念针对CELL,若需要删除行,需要对每一列分别进行设置。所以Hbase的TTL无法直接设置特定时间的TTL,且针对完整行的TTL需要多次操作,列TTL后也无法反馈给业务。
MongoDB:MongoDB在建立文档索引的时候可以在索引上添加过期时间(相对当前设置时间的时间限制),若索引字段是一个数组,则需要取索引字段中的最小失效时间。当基于后台方式创建索引时,TTL线程能够在索引创建期间开始删除失效文档,当基于前台方式创建索引时,TTL线程在索引创建完成后开始删除失效文档,TTL索引的删除不能完全保证失效期后一定删除,存在一定延迟(取决于mongod的工作负载),TTL删除文档后台线程每60s移除失效文档(因此可能存在已过失效期,文档还在的情形)。
综上所述,在业务应用TTL特性的过程中也存在如下几点问题:
(1)TTL的过期时间设置复杂度高;
(2)TTL的失效实时性不够。大部分自带TTL特性的系统,一般采用主动扫库和被动访问来搜索系统中已经过期的元素(如Redis),其问题是到达过期时间的元素能否及时失效,其直接关系到系统的精确度;
(3)TTL失效后无主动反馈机制。当系统中元素TTL生效后,无法主动通知业务,一般需要业务主动访问系统进行判断和收集,然后再针对TTL事件进行相关的处理,在分布式环境下网络交互次数过多,而且在系统拓扑发生变化的情况下业务需要感知并更新访问域;
(4)TTL过期事件处理不能保证完整性。部分带TTL特性的系统,提供订阅通道获取TTL的元素并进行相关处理,但是当事件消费者取走TTL事件但未完成事件处理时除夕那崩溃,就会导致TTL事件丢失。此外,若TTL事件消费者重复消费TTL事件也会导致系统数据的错误;
(5)无法灵活定制TTL事件处理逻辑。业务端对TTL事件的处理需要定制,一旦处理规则发生变化,需要更改程序重新上线,无法实现在线更新。
【发明内容】
本申请的多个方面提供了过期事件自动触发方法、系统、设备及存储介质,能够实现对Redis集群分布式环境下的过期事件的处理;过期时间设置简单,失效实时性好。
本发明的一方面,提供一种过期事件自动触发方法,所述方法包括:
客户端向Redis集群中的各实例写入key并实时设置所述key的过期时间;
向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key;
对所获取的过期的key进行处理,将处理结果发送给对应实例。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述客户端向Redis集群中的各实例写入key包括:
所述客户端通过代理服务层向Redis集群中的各实例写入key并实时设置所述key的过期时间。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述向Redis集群中的各实例发送过期事件获取命令包括:
所述客户端通过代理服务层向Redis集群中的各实例发送过期事件获取命令。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,各实例返回过期的key包括:
各实例将所述带有过期时间的key放入TTL排序队列;
将过期的key从所述TTL排序队列中删除,写入过期事件池;
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述实时设置所述key的过期时间的同时,设置所述key的过期回调。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述将过期的key从所述TTL排序队列中删除,写入过期事件池包括:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述将处理结果发送给对应实例还包括:
将处理结果发送给对应实例,以便对应实例根据所述处理结果将所述过期的key从处理中事件池中删除。
本发明的另一方面,提供一种过期事件自动触发方法,所述方法包括:
Redis实例接收客户端写入的key,对所述key进行过期检查;其中,所述key设置有过期时间;
接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端;
接收所述客户端对所述过期的key的处理结果。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述Redis实例接收客户端写入的key包括:
所述Redis实例接收所述客户端通过代理服务层写入的key。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述对所述key进行过期检查包括:
将所述设置有过期时间的key放入TTL排序队列,遍历所述TTL排序队列进行过期检测;
将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述key还设置有过期回调;
所述将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池包括:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述接收所述客户端发送的过期事件获取命令包括:
所述Redis实例接收所述客户端通过代理服务层发送的过期事件获取命令。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述将过期的key返回给客户端包括:
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述接收所述客户端对所述过期的key的处理结果还包括:
根据所述处理结果将所述过期的key从处理中事件池中删除。
本发明的另一方面,提供一种过期事件自动触发系统,所述系统包括:
设置模块,用于向Redis集群中的各实例写入key并实时设置所述key的过期时间;
获取模块,用于向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key;
处理模块,用于对所获取的过期的key进行处理,将处理结果发送给对应实例。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述设置模块具体用于:
通过代理服务层向Redis集群中的各实例写入key并实时设置所述key的过期时间。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述获取模块具体用于:
通过代理服务层向Redis集群中的各实例发送过期事件获取命令。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,各实例返回过期的key包括:
各实例将所述带有过期时间的key放入TTL排序队列;
将过期的key从所述TTL排序队列中删除,写入过期事件池;
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述设置模块具体还用于:
实时设置所述key的过期时间的同时,设置所述key的过期回调。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述将过期的key从所述TTL排序队列中删除,写入过期事件池包括:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述处理模块具体用于:
将处理结果发送给对应实例,以便对应实例根据所述处理结果将所述过期的key从处理中事件池中删除。
本发明的另一方面,提供一种过期事件自动触发系统,所述系统包括:
过期事件检查模块,用于接收客户端写入的key,对所述key进行过期检查;其中,所述key设置有过期时间;
过期事件返回模块,用于接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端;
处理结果接收模块,用于接收所述客户端对所述过期的key的处理结果。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述过期事件检查模块具体用于:
接收所述客户端通过代理服务层写入的key。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述过期事件检查模块具体用于:
将所述设置有过期时间的key放入TTL排序队列,遍历所述TTL排序队列进行过期检测;
将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述过期事件检查模块具体用于:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述过期事件返回模块具体用于:
接收所述客户端通过代理服务层发送的过期事件获取命令。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述过期事件返回模块具体用于:
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述处理结果接收模块具体用于:
根据所述处理结果将所述过期的key从处理中事件池中删除。
本发明的另一方面,提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
本发明的另一方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上所述的方法。
基于上述介绍可以看出,采用本发明所述方案,能够实现对Redis集群分布式环境下的过期事件的处理;过期时间设置简单,失效实时性好。
【附图说明】
图1为本发明所述过期事件自动触发方法的流程图;
图2为本发明所述过期事件自动触发方法的流程图;
图3为本发明所述过期事件自动触发系统的结构图;
图4为本发明所述过期事件自动触发系统的结构图;
图5示出了适于用来实现本发明实施方式的示例性计算机系统/服务器012的框图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
图1为本发明所述过期事件自动触发方法实施例一的流程图,执行主体为客户端,如图1所示,包括以下步骤:
步骤S11、客户端向Redis集群中的各实例写入key并实时设置所述key的过期时间;
步骤S12、向Redis集群中的各实例发送过期事件获取命令,以便获取所述各实例返回的过期的key;
步骤S13、对所获取的过期的key进行处理,将处理结果发送给对应实例。
优选地,在步骤S11的一种优选实现方式中,
客户端按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy向Redis集群中的各实例写入key,同时,实时设置key的过期时间。
优选地,在实时设置key的过期时间的同时,设置所述key的过期回调。
优选地,所述过期回调为lua脚本的sha1校验码,SHA1是安全散列算法产生的一个固定长度的序列,可以理解为一个键值。Redis实例会保存客户端执行过的lua脚本,客户端只需要给定一个SHA1序列就可以通知Redis实例所需要执行的相应的lua脚本,因此,就可在所述key过期回调时执行相应的Lua脚本了。
优选地,所述代理服务层dbproxy按照预设规则,自动将所述key写入Redis集群对应的实例中。通过代理服务层dbproxy进行代理,实现了在Redis集群的分布式环境下的操作。
各Redis实例中预设了跳表形式的TTL排序队列。优选地,在所述key写入各实例时,各Redis实例检查被写入的key是否具有过期时间,如果是,则将所述带有过期时间的key按照过期时间从小到大的顺序放入TTL排序队列中,以便后期进行过期检查。通过TTL排序队列,可以覆盖全部的key,避免了采样机制并不能保证覆盖全部的key,对于采样未采集到且没有主动访问的过期的key,会遗留在系统中,因此无法保证实时性的问题。
各Redis实例中还预设了过期事件池、处理中事件池。所述过期事件池用于写入过期的key,所述处理中事件池用于写入正在进行过期处理的key。优选地,各Redis实例按照预设的刷新频率自动从头遍历所述TTL排序队列,当发现其中的key过期时,首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池中,等待接收客户端的指令进行下一步操作。通过过期事件池、处理中事件池的组合,避免了当客户端取走TTL事件但未完成事件处理时出现崩溃,导致TTL事件丢失的问题。
当客户端需要更改针对过期事件的处理方法时,只需要更新过期事件处理脚本(lua)并通过代理服务层dbproxy载入到各Redis实例中,由各Redis实例扫描TTL排序队列,替换key对应的过期回调方法(lua脚本的sha1码)。
优选地,在步骤S12的一种优选实现方式中,
所述客户端按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy向Redis集群中的各实例发送过期事件获取命令,以便所述各实例将各实例中的过期的key返回给客户端。
优选地,所述过期事件获取命令为Redis broadcast命令,所述代理服务层dbproxy将所述过期事件获取命令广播到各Redis实例。
所述各Redis实例根据所述过期事件获取命令,从所述过期事件池中获取过期的key,将所述过期的key返回给所述客户端。
优选地,所述代理服务层dbproxy接收各Redis实例返回的过期的key,将所述过期的key汇总,例如,则将所述过期的key按照过期时间从小到大的顺序排序后,返回给所述客户端进行处理。
所述各Redis实例将所述过期的key返回给所述客户端后,将对应的过期的key从过期事件池中移入处理中事件池,等待客户端对所述过期的key的处理结果。
优选地,在步骤S13的一种优选实现方式中,
所述客户端对所述代理服务层dbproxy所返回的过期的key进行处理,将处理结果通过所述代理服务层dbproxy发送给对应Redis实例。
优选地,所述客户端根据所述过期的key按照过期时间从小到大的顺序依次进行处理。
优选地,当各Redis实例接收到客户端对过期的key的处理结果后,将所述过期的key从处理中事件池中删除。
优选地,若各Redis实例在预设时间内,例如,一小时,一天,未接收到客户端过期的key的处理结果,则各Redis实例将所述过期的key自动恢复到过期事件池中,以便再次将所述过期的key返回给所述客户端进行处理。
通过本实施例,实现了对Redis集群分布式环境下的过期事件的处理,支持key过期失效后的主动回调处理和被动扫描处理模式,业务可按需使用;过期时间设置简单,失效实时性好;可实时在线更新过期时间回调逻辑,提供灵活的插件式过期事件处理机制。
图2为本发明所述过期事件自动触发方法实施例一的流程图,执行主体为Redis实例,如图2所示,包括以下步骤:
步骤S21、Redis集群中的各实例接收客户端写入的key,其中,所述客户端写入key的同时,实时设置所述key的过期时间;
步骤S22、接收所述客户端发送的过期事件获取命令,将过期事件返回给客户端;
步骤S23、接收所述客户端对所述过期事件的处理结果。
优选地,在步骤S21的一种优选实现方式中,
客户端按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy向Redis集群中的各实例写入key,同时,实时设置key的过期时间。
Redis集群中的各Redis实例通过代理服务层dbproxy接收客户端写入的key。其中,所述客户端写入key的同时,实时设置所述key的过期时间;
优选地,所述客户端在实时设置key的过期时间的同时,设置所述key的过期回调。
优选地,所述过期回调为lua脚本的sha1校验码,SHA1是安全散列算法产生的一个固定长度的序列,可以理解为一个键值。Redis实例会保存客户端执行过的lua脚本,客户端只需要给定一个SHA1序列就可以通知Redis实例所需要执行的相应的lua脚本,因此,就可在所述key过期回调时执行相应的Lua脚本了。
优选地,所述代理服务层dbproxy按照预设规则,自动将所述key写入Redis集群对应的实例中。通过代理服务层dbproxy进行代理,实现了在Redis集群的分布式环境下的操作。
各Redis实例中预设了跳表形式的TTL排序队列。优选地,在所述key写入各实例时,各Redis实例检查被写入的key是否具有过期时间,如果是,则将所述带有过期时间的key按照过期时间从小到大的顺序放入TTL排序队列中,以便后期进行过期检查。通过TTL排序队列,可以覆盖全部的key,避免了采样机制并不能保证覆盖全部的key,对于采样未采集到且没有主动访问的过期的key,会遗留在系统中,因此无法保证实时性的问题。
各Redis实例中还预设了过期事件池、处理中事件池。所述过期事件池用于写入过期的key,所述处理中事件池用于写入正在进行过期处理的key。优选地,各Redis实例按照预设的刷新频率自动从头遍历所述TTL排序队列,当发现其中的key过期时,首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池中,等待接收客户端的指令进行下一步操作。通过过期事件池、处理中事件池的组合,避免了当客户端取走TTL事件但未完成事件处理时出现崩溃,导致TTL事件丢失的问题。
当客户端需要更改针对过期事件的处理方法时,只需要更新过期事件处理脚本(lua)并通过代理服务层dbproxy载入到各Redis实例中,由各Redis实例扫描TTL排序队列,替换key对应的过期回调方法(lua脚本的sha1码)。
优选地,在步骤S22的一种优选实现方式中,
Redis集群中的各实例接收所述客户端按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy发送的过期事件获取命令,将各实例中的过期的key返回给客户端。
优选地,所述过期事件获取命令为Redis broadcast命令,所述代理服务层dbproxy将所述过期事件获取命令广播到各Redis实例。
所述各Redis实例根据所述过期事件获取命令,从所述过期事件池中获取过期的key,将所述过期的key返回给所述客户端。
优选地,所述代理服务层dbproxy接收各Redis实例返回的过期的key,将所述过期的key汇总,例如,则将所述过期的key按照过期时间从小到大的顺序排序后,返回给所述客户端进行处理。
所述各Redis实例将所述过期的key返回给所述客户端后,将对应的过期的key从过期事件池中移入处理中事件池,等待客户端对所述过期的key的处理结果。
优选地,在步骤S23的一种优选实现方式中,
Redis集群中的各实例通过所述代理服务层dbproxy接收客户端对所述代理服务层dbproxy所返回的过期的key的处理结果。
优选地,所述客户端根据所述过期的key按照过期时间从小到大的顺序依次进行处理。
优选地,当各Redis实例接收到客户端对过期的key的处理结果后,将所述过期的key从处理中事件池中删除。
优选地,若各Redis实例在预设时间内,例如,一小时,一天,未接收到客户端过期的key的处理结果,则各Redis实例将所述过期的key自动恢复到过期事件池中,以便再次将所述过期的key返回给所述客户端进行处理。
通过本实施例,实现了对Redis集群分布式环境下的过期事件的处理,支持key过期失效后的主动回调处理和被动扫描处理模式,业务可按需使用;过期时间设置简单,失效实时性好;可实时在线更新过期时间回调逻辑,提供灵活的插件式过期事件处理机制。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本发明所述方案进行进一步说明。
图3为本发明所述过期事件自动触发系统实施例的结构图,执行主体为客户端,如图3所示,包括以下模块:
设置模块31,用于向Redis集群中的各实例写入key并实时设置所述key的过期时间;
获取模块32,用于向Redis集群中的各实例发送过期事件获取命令,以便获取所述各实例返回的过期的key;
处理模块33,用于对所获取的过期的key进行处理,将处理结果发送给对应实例。
优选地,在设置模块31的一种优选实现方式中,
设置模块31按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy向Redis集群中的各实例写入key,同时,实时设置key的过期时间。
优选地,设置模块31在实时设置key的过期时间的同时,设置所述key的过期回调。
优选地,所述过期回调为lua脚本的sha1校验码,SHA1是安全散列算法产生的一个固定长度的序列,可以理解为一个键值。Redis实例会保存客户端执行过的lua脚本,设置模块31只需要给定一个SHA1序列就可以通知Redis实例所需要执行的相应的lua脚本,因此,就可在所述key过期回调时执行相应的Lua脚本了。
优选地,所述代理服务层dbproxy按照预设规则,自动将所述key写入Redis集群对应的实例中。通过代理服务层dbproxy进行代理,实现了在Redis集群的分布式环境下的操作。
各Redis实例中预设了跳表形式的TTL排序队列。优选地,在所述key写入各实例时,各Redis实例检查被写入的key是否具有过期时间,如果是,则将所述带有过期时间的key按照过期时间从小到大的顺序放入TTL排序队列中,以便后期进行过期检查。通过TTL排序队列,可以覆盖全部的key,避免了采样机制并不能保证覆盖全部的key,对于采样未采集到且没有主动访问的过期的key,会遗留在系统中,因此无法保证实时性的问题。
各Redis实例中还预设了过期事件池、处理中事件池。所述过期事件池用于写入过期的key,所述处理中事件池用于写入正在进行过期处理的key。优选地,各Redis实例按照预设的刷新频率自动从头遍历所述TTL排序队列,当发现其中的key过期时,首先判断所述过期的key是否设置了过期回调;如果是,则自动触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池中,等待接收客户端的指令进行下一步操作。通过过期事件池、处理中事件池的组合,避免了当客户端取走TTL事件但未完成事件处理时出现崩溃,导致TTL事件丢失的问题。
当设置模块31需要更改针对过期事件的处理方法时,只需要更新过期事件处理脚本(lua)并通过代理服务层dbproxy载入到各Redis实例中,由各Redis实例扫描TTL排序队列,替换key对应的过期回调方法(lua脚本的sha1码)。
优选地,在获取模块32的一种优选实现方式中,
所述获取模块32按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy向Redis集群中的各实例发送过期事件获取命令,以便所述各实例将各实例中的过期的key返回给获取模块32。
优选地,所述过期事件获取命令为Redis broadcast命令,所述代理服务层dbproxy将所述过期事件获取命令广播到各Redis实例。
所述各Redis实例根据所述过期事件获取命令,从所述过期事件池中获取过期的key,将所述过期的key返回给所述获取模块32。
优选地,所述代理服务层dbproxy接收各Redis实例返回的过期的key,将所述过期的key汇总,例如,则将所述过期的key按照过期时间从小到大的顺序排序后,返回给所述获取模块32进行处理。
所述各Redis实例将所述过期的key返回给所述获取模块32后,将对应的过期的key从过期事件池中移入处理中事件池,等待客户端对所述过期的key的处理结果。
优选地,在处理模块33的一种优选实现方式中,
所述处理模块33对所述代理服务层dbproxy所返回的过期的key进行处理,将处理结果通过所述代理服务层dbproxy发送给对应Redis实例。
优选地,所述处理模块33根据所述过期的key按照过期时间从小到大的顺序依次进行处理。
优选地,当各Redis实例接收到处理模块33对过期的key的处理结果后,将所述过期的key从处理中事件池中删除。
优选地,若各Redis实例在预设时间内,例如,一小时,一天,未接收到处理模块33对过期的key的处理结果,则各Redis实例将所述过期的key自动恢复到过期事件池中,以便再次将所述过期的key返回给所述获取模块32进行处理。
通过本实施例,实现了对Redis集群分布式环境下的过期事件的处理,支持key过期失效后的主动回调处理和被动扫描处理模式,业务可按需使用;过期时间设置简单,失效实时性好;可实时在线更新过期时间回调逻辑,提供灵活的插件式过期事件处理机制。
图4为本发明所述过期事件自动触发系统实施例的结构图,执行主体为Redis实例,如图4所示,包括以下模块:
过期事件检查模块41,用于接收客户端写入的key,对所述key进行过期检查;其中,所述key设置有过期时间;
过期事件返回模块42,用于接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端;
处理结果接收模块43,用于接收所述客户端对所述过期的key的处理结果。
优选地,在过期事件检查模块41的一种优选实现方式中,
客户端的设置模块按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy向Redis集群中的各实例写入key,同时,实时设置key的过期时间。
Redis集群中的各Redis实例的过期事件检查模块41通过代理服务层dbproxy接收客户端的设置模块写入的key。其中,所述客户端的设置模块写入key的同时,实时设置所述key的过期时间;
优选地,所述客户端的设置模块在实时设置key的过期时间的同时,设置所述key的过期回调。
优选地,所述过期回调为lua脚本的sha1校验码,SHA1是安全散列算法产生的一个固定长度的序列,可以理解为一个键值。Redis实例会保存客户端执行过的lua脚本,客户端只需要给定一个SHA1序列就可以通知Redis实例所需要执行的相应的lua脚本,因此,就可在所述key过期回调时执行相应的Lua脚本了。
优选地,所述代理服务层dbproxy按照预设规则,自动将所述key写入Redis集群对应的实例中。通过代理服务层dbproxy进行代理,实现了在Redis集群的分布式环境下的操作。
各Redis实例中预设了跳表形式的TTL排序队列。优选地,在所述key写入各实例时,各Redis实例的过期事件检查模块41检查被写入的key是否具有过期时间,如果是,则将所述带有过期时间的key按照过期时间从小到大的顺序放入TTL排序队列中,以便后期进行过期检查。通过TTL排序队列,可以覆盖全部的key,避免了采样机制并不能保证覆盖全部的key,对于采样未采集到且没有主动访问的过期的key,会遗留在系统中,因此无法保证实时性的问题。
各Redis实例中还预设了过期事件池、处理中事件池。所述过期事件池用于写入过期的key,所述处理中事件池用于写入正在进行过期处理的key。优选地,各Redis实例的过期事件检查模块41按照预设的刷新频率自动从头遍历所述TTL排序队列,当发现其中的key过期时,首先判断所述过期的key是否设置了过期回调;如果是,则自动触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池中,等待接收客户端的指令进行下一步操作。
当客户端的设置模块需要更改针对过期事件的处理方法时,只需要更新过期事件处理脚本(lua)并通过代理服务层dbproxy载入到各Redis实例中,由各Redis实例扫描TTL排序队列,替换key对应的过期回调方法(lua脚本的sha1码)。
优选地,在过期事件返回模块42的一种优选实现方式中,
Redis集群中的各实例的过期事件返回模块42接收所述客户端的获取模块按照Redis协议访问服务代理层dbproxy;通过代理服务层dbproxy发送的过期事件获取命令,将各实例中的过期的key返回给客户端。
优选地,所述过期事件获取命令为Redis broadcast命令,所述代理服务层dbproxy将所述过期事件获取命令广播到各Redis实例。
所述各Redis实例的过期事件返回模块42根据所述过期事件获取命令,从所述过期事件池中获取过期的key,将所述过期的key返回给所述客户端的获取模块。
优选地,所述代理服务层dbproxy接收各Redis实例的过期事件返回模块42返回的过期的key,将所述过期的key汇总,例如,则将所述过期的key按照过期时间从小到大的顺序排序后,返回给所述客户端的获取模块进行处理。
所述各Redis实例将所述过期的key返回给所述客户端的获取模块后,将对应的过期的key从过期事件池中移入处理中事件池,等待客户端的处理模块对所述过期的key的处理结果。
优选地,在处理结果接收模块43的一种优选实现方式中,
Redis集群中的各实例的处理结果接收模块43通过所述代理服务层dbproxy接收客户端的处理模块对所述代理服务层dbproxy所返回的过期的key的处理结果。
优选地,所述客户端的处理模块根据所述过期的key按照过期时间从小到大的顺序依次进行处理。
优选地,当各Redis实例的处理结果接收模块43接收到客户端的处理模块对过期的key的处理结果后,将所述过期的key从处理中事件池中删除。
优选地,若各Redis实例的处理结果接收模块43在预设时间内,例如,一小时,一天,未接收到客户端的处理模块对过期的key的处理结果,则各Redis实例将所述过期的key自动恢复到过期事件池中,以便过期事件返回模块42再次将所述过期的key返回给所述客户端的获取模块,以便所述客户端的处理模块对所述过期的key进行处理。
通过本实施例,实现了对Redis集群分布式环境下的过期事件的处理,支持key过期失效后的主动回调处理和被动扫描处理模式,业务可按需使用;过期时间设置简单,失效实时性好;可实时在线更新过期时间回调逻辑,提供灵活的插件式过期事件处理机制。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的终端和服务器的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
图5示出了适于用来实现本发明实施方式的示例性计算机系统/服务器012的框图。图5显示的计算机系统/服务器012仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统/服务器012以通用计算设备的形式表现。计算机系统/服务器012的组件可以包括但不限于:一个或者多个处理器或者处理器016,系统存储器028,连接不同系统组件(包括系统存储器028和处理器016)的总线018。
总线018表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器012典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器012访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器028可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)030和/或高速缓存存储器032。计算机系统/服务器012可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统034可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线018相连。存储器028可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块042的程序/实用工具040,可以存储在例如存储器028中,这样的程序模块042包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块042通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器012也可以与一个或多个外部设备014(例如键盘、指向设备、显示器024等)通信,在本发明中,计算机系统/服务器012与外部雷达设备进行通信,还可与一个或者多个使得发声者能与该计算机系统/服务器012交互的设备通信,和/或与使得该计算机系统/服务器012能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口022进行。并且,计算机系统/服务器012还可以通过网络适配器020与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图5所示,网络适配器020通过总线018与计算机系统/服务器012的其它模块通信。应当明白,尽管图5中未示出,可以结合计算机系统/服务器012使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器016通过运行存储在系统存储器028中的程序,从而执行本发明所描述的实施例中的功能和/或方法。
上述的计算机程序可以设置于计算机存储介质中,即该计算机存储介质被编码有计算机程序,该程序在被一个或多个计算机执行时,使得一个或多个计算机执行本发明上述实施例中所示的方法流程和/或装置操作。
随着时间、技术的发展,介质含义越来越广泛,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载等。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在发声者计算机上执行、部分地在发声者计算机上执行、作为一个独立的软件包执行、部分在发声者计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)连接到发声者计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (24)

1.一种过期事件自动触发方法,其特征在于,所述方法包括:
客户端向Redis集群中的各实例写入key并实时设置所述key的过期时间;
向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key;
对所获取的过期的key进行处理,将处理结果发送给对应实例;
其中,各实例返回的过期的key包括:
各实例将所述设置有过期时间的key放入TTL排序队列;
将过期的key从所述TTL排序队列中删除,写入过期事件池;
其中,所述将处理结果发送给对应实例还包括:
将处理结果发送给对应实例,以便对应实例根据所述处理结果将所述过期的key从处理中事件池中删除。
2.根据权利要求1所述的方法,其特征在于,所述客户端向Redis集群中的各实例写入key包括:
所述客户端通过代理服务层向Redis集群中的各实例写入key并实时设置所述key的过期时间。
3.根据权利要求2所述的方法,其特征在于,所述向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key包括:
所述客户端通过代理服务层向Redis集群中的各实例发送过期事件获取命令,通过代理服务层获取所述各实例返回的过期的key。
4.根据权利要求1所述的方法,其特征在于,各实例返回过期的key还包括:
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
5.根据权利要求4所述的方法,其特征在于,所述实时设置所述key的过期时间的同时,设置所述key的过期回调。
6.根据权利要求5所述的方法,其特征在于,所述将过期的key从所述TTL排序队列中删除,写入过期事件池包括:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
7.一种过期事件自动触发方法,其特征在于,所述方法包括:
Redis实例接收客户端写入的key,对所述key进行过期检查;其中,所述key设置有过期时间;
接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端;
接收所述客户端对所述过期的key的处理结果;
其中,所述对所述key进行过期检查包括:
将所述设置有过期时间的key放入TTL排序队列,遍历所述TTL排序队列进行过期检测;
将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池;
其中,所述接收所述客户端对所述过期的key的处理结果还包括:
根据所述处理结果将所述过期的key从处理中事件池中删除。
8.根据权利要求7所述的方法,其特征在于,所述Redis实例接收客户端写入的key包括:
所述Redis实例接收所述客户端通过代理服务层写入的key。
9.根据权利要求7所述的方法,其特征在于,所述key还设置有过期回调;
所述将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池包括:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
10.根据权利要求7或9所述的方法,其特征在于,所述接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端包括:
所述Redis实例接收所述客户端通过代理服务层发送的过期事件获取命令,通过代理服务层将过期的key返回给客户端。
11.根据权利要求10所述的方法,其特征在于,所述将过期的key返回给客户端包括:
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
12.一种过期事件自动触发系统,其特征在于,所述系统包括:
设置模块,用于向Redis集群中的各实例写入key并实时设置所述key的过期时间;
获取模块,用于向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key;
处理模块,用于对所获取的过期的key进行处理,将处理结果发送给对应实例;
其中,各实例返回过期的key包括:
各实例将所述设置有过期时间的key放入TTL排序队列;
将过期的key从所述TTL排序队列中删除,写入过期事件池;
其中,所述处理模块具体用于:
将处理结果发送给对应实例,以便对应实例根据所述处理结果将所述过期的key从处理中事件池中删除。
13.根据权利要求12所述的系统,其特征在于,所述设置模块具体用于:
通过代理服务层向Redis集群中的各实例写入key并实时设置所述key的过期时间。
14.根据权利要求13所述的系统,其特征在于,所述获取模块具体用于:
通过代理服务层向Redis集群中的各实例发送过期事件获取命令,通过代理服务层获取所述各实例返回的过期的key。
15.根据权利要求12所述的系统,其特征在于,各实例返回过期的key还包括:
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给客户端,将所述过期的key从过期事件池中移入处理中事件池。
16.根据权利要求15所述的系统,其特征在于,所述设置模块具体还用于:
实时设置所述key的过期时间的同时,设置所述key的过期回调。
17.根据权利要求16所述的系统,其特征在于,所述将过期的key从所述TTL排序队列中删除,写入过期事件池包括:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
18.一种过期事件自动触发系统,其特征在于,所述系统包括:
过期事件检查模块,用于接收客户端写入的key,对所述key进行过期检查;其中,所述key设置有过期时间;
过期事件返回模块,用于接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端;
处理结果接收模块,用于接收所述客户端对所述过期的key的处理结果;
其中,所述过期事件检查模块具体用于:
将所述设置有过期时间的key放入TTL排序队列,遍历所述TTL排序队列进行过期检测;
将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池;
其中,所述处理结果接收模块具体用于:
根据所述处理结果将所述过期的key从处理中事件池中删除。
19.根据权利要求18所述的系统,其特征在于,所述过期事件检查模块具体用于:
接收所述客户端通过代理服务层写入的key。
20.根据权利要求18所述的系统,其特征在于,所述过期事件检查模块具体用于:
首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。
21.根据权利要求18或20所述的系统,其特征在于,所述过期事件返回模块具体用于:
接收所述客户端通过代理服务层发送的过期事件获取命令,通过代理服务层将过期的key返回给客户端。
22.根据权利要求21所述的系统,其特征在于,所述过期事件返回模块具体用于:
根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。
23.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~11中任一项所述的方法。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~11中任一项所述的方法。
CN201810779270.5A 2018-07-16 2018-07-16 一种过期事件自动触发方法及系统 Active CN109241128B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810779270.5A CN109241128B (zh) 2018-07-16 2018-07-16 一种过期事件自动触发方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810779270.5A CN109241128B (zh) 2018-07-16 2018-07-16 一种过期事件自动触发方法及系统

Publications (2)

Publication Number Publication Date
CN109241128A CN109241128A (zh) 2019-01-18
CN109241128B true CN109241128B (zh) 2021-05-14

Family

ID=65072006

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810779270.5A Active CN109241128B (zh) 2018-07-16 2018-07-16 一种过期事件自动触发方法及系统

Country Status (1)

Country Link
CN (1) CN109241128B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111222947A (zh) * 2020-01-02 2020-06-02 北京字节跳动网络技术有限公司 延迟事件的处理方法、装置、电子设备和存储介质
CN111640027B (zh) * 2020-05-28 2023-09-12 北京金山云网络技术有限公司 业务数据的处理、业务的处理方法、装置及电子设备
CN113204464B (zh) * 2021-04-23 2023-04-25 商盟商务服务有限公司 基于业务场景的实时业务监控方法、系统、终端及介质
CN113297192B (zh) * 2021-05-31 2023-03-14 上海艾麒信息科技股份有限公司 针对redis hash类型数据控制field过期的方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102740243A (zh) * 2011-04-11 2012-10-17 中兴通讯股份有限公司 一种处理过期短消息的方法及装置
CN103177027B (zh) * 2011-12-23 2016-02-17 北京新媒传信科技有限公司 获取动态Feed索引的方法和系统
US10747768B2 (en) * 2016-06-14 2020-08-18 Fuji Xerox Co., Ltd. Data processing system and data processing method
CN107818018A (zh) * 2016-09-14 2018-03-20 北京京东尚科信息技术有限公司 分布式锁的控制方法和装置
CN108108416A (zh) * 2017-12-14 2018-06-01 上海斐讯数据通信技术有限公司 redis数据过期处理的方法和装置

Also Published As

Publication number Publication date
CN109241128A (zh) 2019-01-18

Similar Documents

Publication Publication Date Title
CN109241128B (zh) 一种过期事件自动触发方法及系统
CN108897691B (zh) 基于接口模拟服务的数据处理方法、装置、服务器和介质
US20200387443A1 (en) Systems and methods for testing source code
CN110113407B (zh) 小程序状态同步方法、设备和计算机存储介质
US9817879B2 (en) Asynchronous data replication using an external buffer table
CN110825456B (zh) 加载时间计算方法、装置、计算机设备及存储介质
CN109902255B (zh) 页面混合浏览记录生成方法、装置、设备和存储介质
CN109471851B (zh) 数据处理方法、装置、服务器和存储介质
US10122598B2 (en) Subscription watch lists for event handling
CN109726076B (zh) 一种小程序生命周期管理方法和系统
US20190347246A1 (en) Determining when a change set was delivered to a workspace or stream and by whom
CN112612977A (zh) 一种页面显示方法、系统、装置、设备及存储介质
CN112199567A (zh) 一种分布式数据采集方法、系统、服务器和存储介质
CN112860706A (zh) 一种业务的处理方法、装置、设备及存储介质
CN115408391A (zh) 一种数据库表变更方法、装置、设备和存储介质
CN113761412A (zh) 应用页面的显示方法、装置、电子设备、介质及应用系统
CN109873861B (zh) 跨区块链节点的交互方法及装置、存储介质及电子设备
CN110232000B (zh) 数据存储管理方法及装置
CN110096543B (zh) 应用程序的数据操作方法、装置、服务器和介质
KR20210110156A (ko) 캐시 장치, 캐시, 시스템, 데이터 처리 방법, 장치 및 매체
CN113722007B (zh) Vpn分支设备的配置方法、装置及系统
CN110955398B (zh) 一种二维码显示方法、装置、计算机设备及存储介质
CN112711602B (zh) 一种存储过程的运行方法、装置,数据库系统及存储介质
CN111263195B (zh) 弹幕处理方法、装置、服务器设备及存储介质
CN113221097A (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