(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202211069536.X
(22)申请日 2022.09.02
(65)同一申请的已公布的文献号
申请公布号 CN 115129761 A
(43)申请公布日 2022.09.30
(73)专利权人 杭州雅拓信息技 术有限公司
地址 310014 浙江省杭州市拱 墅区绍兴 路
398号国投大厦7号
(72)发明人 王联军 马平男 王有兵 陈洪杨
(74)专利代理 机构 杭州裕阳联合专利代理有限
公司 33289
专利代理师 金方玮
(51)Int.Cl.
G06F 16/2455(2019.01)
G06F 9/54(2006.01)(56)对比文件
CN 113448752 A,2021.09.28
CN 112559592 A,2021.0 3.26
王知无-import_bigdata.基 于Kafka+Fl ink
+Redis的电商大屏实时计算案例. 《ht tps://
cloud.tencent.com/devel oper/article/
1536148》 .2019,第1-9页.
我是阿沐.Redis使用lua脚本. 《ht tps://
zhuanlan.zhihu.com/p/ 376535035》 .2021,第1-
8页.
大笨先森_.使用Redis的Zset+lua实现滑动
窗口限流. 《ht tps://juejin.cn/post/
7109055415668867080》 .202 2,第1-9页.
审查员 齐智超
(54)发明名称
基于Redis实现窗口实时计算的方法、 系统
和设备
(57)摘要
本发明公开了一种基于Redi s实现窗口实时
计算的方法、 系统和设备, 该方法以下步骤: 接收
行为事件数据并进行预处理后写入消息队列; 预
先加载指标变量, 根据指标变量计算方法实现不
同的LUA脚本处理逻辑, 并将LUA脚本预加载到
Redis服务端; 消费消息队列中的数据, 调用LUA
脚本执行数据存储; 根据指标变量调用指标服务
实时获取对应数据进行计算得到计算结果。 本发
明的基于Redis实现窗口实时计算的方法、 系统
和设备, 基于Redis实现窗口的实时计算, 通过
Redis的Hash与Zset存储结构缓存汇总明细, 并
通过自定义窗口算法实现窗口的滑动或滚动, 将
多次Redi s访问请求包封装为LUA脚本, 不仅避免
频繁的IO操作, 减少网络请求, 而且避免了高并
发场景下的事物一 致性。
权利要求书1页 说明书6页 附图3页
CN 115129761 B
2022.12.23
CN 115129761 B
1.一种基于Redis实现窗口实时计算的方法, 其特 征在于, 包 含以下步骤:
接收行为事 件数据并进行 预处理后写入消息队列;
预先加载指标变量, 根据指标变量计算方法实现不同的LUA脚本处理逻辑, 并将LUA脚
本预加载到Redis服 务端;
消费消息队列中的数据, 调用LUA脚本执 行数据存储;
根据指标变量调用指标服 务实时获取对应数据进行计算得到计算结果;
所述接收行为事 件数据并写入消息队列的具体方法为:
通过flink行为事件数据并进行 预处理后写入消息队列;
所述调用LUA脚本执 行数据存储的具体方法为:
通过Redis的Hash与Zset存 储结构缓存汇总明细;
通过Redis的Hash与Zset存 储结构缓存汇总明细的具体方法为:
通过Zset存 储出现的刻度, 通过Hash存 储不同刻度下的汇总值;
所述根据指标变量调用指标服务实时获取对应数据进行计算得到计算结果的具体方
法为:
调用LUA脚本从Zset中获取 窗口刻度, 根据窗口内的刻度 查询Hash实现刻度汇总, 进行
计算得到计算结果。
2.根据权利要求1所述的基于Redis实现窗口实时计算的方法, 其特 征在于,
对行为事件数据进行预处理的具体方法包含数据清洗、 数据分类整合、 数据报文校验
和数据分类汇总中的至少一种。
3.根据权利要求1所述的基于Redis实现窗口实时计算的方法, 其特 征在于,
在所述预 先加载指标变量之前, 所述基于Redis实现窗口实时计算的方法还 包含:
配置指标变量。
4.一种基于Redis实现窗口实时计算的系统, 其特 征在于, 包 含:
数据处理模块, 用于 接收行为事 件数据并进行 预处理后写入消息队列;
预加载模块, 用于预先加载指标变量, 根据指标变量计算方法实现不同的LUA脚本处理
逻辑, 并将LUA脚本预加载到Redis服 务端;
存储模块, 用于消费消息队列中的数据, 调用LUA脚本执 行数据存储;
计算模块, 用于根据指标变量调用指标服务实时获取对应数据进行计算得到计算结
果;
所述数据处 理模块通过flink行为事件数据并进行 预处理后写入消息队列;
所述存储模块通过Redis的Hash与Zset存 储结构缓存汇总明细;
所述存储模块通过Zset存 储出现的刻度, 通过Hash存 储不同刻度下的汇总值;
计算模块调用LUA脚本从Zset中获取窗口刻度, 根据窗口内的刻度查询Hash实现刻度
汇总, 进行计算得到计算结果。
5.一种电子设备, 其特征在于, 包括: 存储器和 处理器, 所述存储器用于存储一条或多
条计算机指 令, 其中, 所述一条或多 条计算机指 令被所述处理器执行以实现如权利要求 1‑3
中任一项所述的基于Redis实现窗口实时计算的方法。
6.一种存储有计算机程序的计算机可读存储介质, 其特征在于, 所述计算机程序使计
算机执行时实现如权利要求1 ‑3中任一项所述的基于Redis实现窗口实时计算的方法。权 利 要 求 书 1/1 页
2
CN 115129761 B
2基于Redis实现窗口实时计算的方 法、 系统和设 备
技术领域
[0001]本发明涉及一种基于Redis实现窗口实时计算的方法、 系统和设备。
背景技术
[0002]在实时计算场景中, 往往需要根据事件发生时间或者处理时间作为参照, 按照一
定时间进 行滑动窗口与滚动窗口的指标计算。 指标计算的方式包括不限于计数、 唯一计数、
求和、 最大值、 最小值、 平均值等统计方法。 目前, 在现有场景中, 为了实现营销防打扰、 风险
识别、 风控反欺诈、 客户行为事件匹配的时间窗口统计, 往往将事件明细数据保存至数据库
中。 当需要查询该客户在近一段时间内的统计指标 的时候, 根据 统计指标的配置条件生成
时间范围的查询SQ L, 最终将执 行的SQL结果返回。
[0003]现有的方法, 依赖于数据库 存储与查询, 实时对数据库实现数据的写入与查询。 在
高并发的场景下, 随着事件的明细数据存储越来越 大, 频繁的IO操作导致响应耗时较长, 无
法满足实时计算的性能要求, 无法支持金融场景下高并发的营销防打扰、 风险识别、 风控反
欺诈等场景。
发明内容
[0004]本发明提供了一种基于 Redis实现窗口实 时计算的方法、 系统和设备, 解决上现有
技术存在的技 术问题, 采用如下的技 术方案:
[0005]一种基于Redis实现窗口实时计算的方法, 包 含以下步骤:
[0006]接收行为事 件数据并进行 预处理后写入消息队列;
[0007]预先加载指标变量, 根据指标变量计算方法实现不同的LUA脚本处理逻辑, 并将
LUA脚本预加载到Redis服 务端;
[0008]消费消息队列中的数据, 调用LUA脚本执 行数据存储;
[0009]根据指标变量调用指标服 务实时获取对应数据进行计算得到计算结果。
[0010]进一步地, 对行为事件数据进行预处理的具体方法包含数据清洗、 数据分类整合、
数据报文校验和数据分类汇总中的至少一种。
[0011]进一步地, 所述接收行为事 件数据并写入消息队列的具体方法为:
[0012]通过flink行为事件数据并进行 预处理后写入消息队列。
[0013]进一步地, 所述调用LUA脚本执 行数据存储的具体方法为:
[0014]通过Redis的Hash与Zset存 储结构缓存汇总明细。
[0015]进一步地, 通过Redis的Hash与Zset存 储结构缓存汇总明细的具体方法为:
[0016]通过Zset存 储出现的刻度, 通过Hash存 储不同刻度下的汇总值。
[0017]进一步地, 所述根据指标变量调用指标服务实时获取对应数据进行计算得到计算
结果的具体方法为:
[0018]调用LUA脚本 从Zset中获取窗 口刻度, 根据窗 口内的刻度查询Hash 实现刻度汇总,
进行计算得到计算结果。说 明 书 1/6 页
3
CN 115129761 B
3
专利 基于Redis实现窗口实时计算的方法、系统和设备
文档预览
中文文档
11 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 17:16:51上传分享