【技术实现步骤摘要】
一种过期事件自动触发方法及系统
本专利技术涉及计算机应用技术,特别涉及过期事件自动触发方法及系统。
技术介绍
随着NoSQL系统在互联网应用中的普及,为了解决业务应用场景下的各种需求,NoSQL功能特性也逐渐丰富完善,其中TTL(timetolive)特性在定时开关、缓存更新、锁超时等场景下,很好的解决了业务应用的问题,比如定时优惠、网站数据缓存(如积分排行榜)、消息超时取消、延迟队列、事件生命周期到期反馈等等。在众多自带TTL的系统(如MongoDB、Cassandra、Memcache、RabbitMQ、Redis、CouchBase、Hbase等等)中,都能设置带生命周期的KEY或对象,当元素的生命周期结束时,自动销毁元素,业务可以利用这一特性来设置各种标记。针对TTL机制,现有的主流系统如:Redis:支持过期时间设置,通过主动采样和被动访问来淘汰过期的KEY,其采样机制并不能保证覆盖全部的KEY,对于采样未采集到且没有主动访问的过期的key,就会遗留在系统中,因此无法保证实时性。同时,原生的Redis单实例可以利用订阅和keyspace方式实现过期事件的反馈,在分布式环境下无法使用。Cassandra:Cassandra中TTL的精度单位为秒,且不能设置在columnfamily上,只能设置在columnvalue上,设置复杂,且设置后难以改变。若创建时未带TTL后期也难以设置。对于已设置的TTL,只能通过先读取然后再次插入所有数据,交互多且有数据访问。所以Cassandra的TTL操作复杂,更新成本高,且无TTL事件反馈机制。Hbase ...
【技术保护点】
1.一种过期事件自动触发方法,其特征在于,所述方法包括:客户端向Redis集群中的各实例写入key并实时设置所述key的过期时间;向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key;对所获取的过期的key进行处理,将处理结果发送给对应实例。
【技术特征摘要】
1.一种过期事件自动触发方法,其特征在于,所述方法包括:客户端向Redis集群中的各实例写入key并实时设置所述key的过期时间;向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key;对所获取的过期的key进行处理,将处理结果发送给对应实例。2.根据权利要求1所述的方法,其特征在于,所述客户端向Redis集群中的各实例写入key包括:所述客户端通过代理服务层向Redis集群中的各实例写入key并实时设置所述key的过期时间。3.根据权利要求2所述的方法,其特征在于,所述向Redis集群中的各实例发送过期事件获取命令,获取所述各实例返回的过期的key包括:所述客户端通过代理服务层向Redis集群中的各实例发送过期事件获取命令,通过代理服务层获取所述各实例返回的过期的key。4.根据权利要求1所述的方法,其特征在于,各实例返回过期的key包括:各实例将所述带有过期时间的key放入TTL排序队列;将过期的key从所述TTL排序队列中删除,写入过期事件池;根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。5.根据权利要求4所述的方法,其特征在于,所述实时设置所述key的过期时间的同时,设置所述key的过期回调。6.根据权利要求5所述的方法,其特征在于,所述将过期的key从所述TTL排序队列中删除,写入过期事件池包括:首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。7.根据权利要求4至6任一所述的方法,其特征在于,所述将处理结果发送给对应实例还包括:将处理结果发送给对应实例,以便对应实例根据所述处理结果将所述过期的key从处理中事件池中删除。8.一种过期事件自动触发方法,其特征在于,所述方法包括:Redis实例接收客户端写入的key,对所述key进行过期检查;其中,所述key设置有过期时间;接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端;接收所述客户端对所述过期的key的处理结果。9.根据权利要求8所述的方法,其特征在于,所述Redis实例接收客户端写入的key包括:所述Redis实例接收所述客户端通过代理服务层写入的key。10.根据权利要求8所述的方法,其特征在于,所述对所述key进行过期检查包括:将所述设置有过期时间的key放入TTL排序队列,遍历所述TTL排序队列进行过期检测;将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池。11.根据权利要求10所述的方法,其特征在于,所述key还设置有过期回调;所述将检测到的过期的key从所述TTL排序队列中删除,写入过期事件池包括:首先判断所述过期的key是否设置了过期回调;如果是,则将所述过期的key从所述TTL排序队列中删除,触发预设的过期回调逻辑;如果否,则将所述过期的key从所述TTL排序队列中删除,写入过期事件池。12.根据权利要求10或11所述的方法,其特征在于,所述接收所述客户端发送的过期事件获取命令,将过期的key返回给客户端包括:所述Redis实例接收所述客户端通过代理服务层发送的过期事件获取命令,通过代理服务层将过期的key返回给客户端。13.根据权利要求12所述的方法,其特征在于,所述将过期的key返回给客户端包括:根据所述过期事件获取命令,从所述过期事件池中获取过期的key返回给所述客户端,将所述过期的key从过期事件池中移入处理中事件池。14.根据权利要求13所述的方法,其特征在于,所述接收所述客户端对所述过期的key的处理结果还包括:根据所述处理结果将所述过期的key从处理中事件池中删除。15.一种过期事件自动触发系统,其特征在于,所述系统包括...
【专利技术属性】
技术研发人员:张健,
申请(专利权)人:北京百度网讯科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。