掌桥专利:专业的专利平台
掌桥专利
首页

信息发送方法、装置、计算机设备及计算机可读存储介质

文献发布时间:2023-06-19 19:28:50


信息发送方法、装置、计算机设备及计算机可读存储介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种信息发送方法、装置、计算机设备及计算机可读存储介质。

背景技术

目前信用卡申请的所有渠道、所有办卡流程都需要手机验证码,越来越多的公司使用子的短信服务平台管理公司内部所有的短信发送业务。随着科学技术的不断发展与进步,一些异常人员会通过非正常手段来攻击发送短信的接口,给同一个手机号发送大量的短信验证码,或遍历手机号发送验证码。尤其是如果在短信高并发的场景下攻击接口,是很难防范的。

发明内容

有鉴于此,本发明的目的是为了克服现有技术中的不足,提供了可应用于如金融科技领域或其他技术领域的一种信息发送方法、装置、计算机设备及计算机可读存储介质。

本发明提供如下技术方案:

第一方面,本公开实施例中提供了一种信息发送方法,包括:

根据接收方手机号和短信内容,生成信息发送标识;

对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中;

对所述信息发送标识执行所述Redis数据库中设置的set命令,得到返回结果,若所述返回结果为通过,则发送所述短信内容给所述接收方手机号。

进一步地,所述根据接收方手机号和短信内容,生成信息发送标识,包括:

对所述接收方手机号、所述短信内容进行md5加密,获得md5值,并将所述md5值作为所述信息发送标识。

进一步地,所述对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中之前,还包括:

统计所述接收方手机号在预设时间内接收所述短信内容的次数,生成次数值;

统计所述接收方手机号接收所述短信内容超过所述预设时间的过期时间,生成超期值;

将所述次数值、所述超期值和所述预设时间进行整合,生成所述Redis数据库中设置的set命令。

进一步地,所述对所述信息发送标识执行所述Redis数据库中设置的set命令,得到返回结果之后,还包括:

若所述返回结果为不通过,则向后台短信发送接口进行报错,并不发送所述短信内容给所述接收方手机号。

进一步地,所述信息发送方法还包括:

当所述次数值超过预设次数阈值时,触发短信告警对所述短信内容的发送方进行黑名单管理。

进一步地,所述信息发送方法还包括:

将所述预设次数阈值存储在本地数据库中;

判断当前日期是否处于活动期,若是,则提高所述预设次数阈值;若否,则降低所述预设次数阈值。

进一步地,所述短信内容包括文本、图片、语音、视频中的一种或多种组合。

第二方面,本公开实施例中提供了一种信息发送装置,所述装置包括:

标识生成模块,用于根据接收方手机号和短信内容,生成信息发送标识;

标识存储模块,用于对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中;

信息发送模块,用于对所述信息发送标识执行所述Redis数据库中设置的set命令,得到返回结果,若所述返回结果为通过,则发送所述短信内容给所述接收方手机号。

第三方面,本公开实施例中提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现第一方面中所述信息发送方法的步骤。

第四方面,本公开实施例中提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中所述信息发送方法的步骤。

本申请的实施例具有如下优点:

本申请实施例提供的信息发送方法,根据接收方手机号和短信内容,生成信息发送标识;对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中;对所述信息发送标识执行所述Redis数据库中设置的set命令,得到返回结果,若所述返回结果为通过,则发送所述短信内容给所述接收方手机号。通过上述方法,解决了异常人员通过高并发手段对短信发送接口实行轰炸,从而短时间内重复发送相同短信给用户的问题,避免了用户收到多个相同的短信,从而提高了用户体验。

为使本发明的上述目的、特征和优点能更明显和易懂,下文特举较佳实施例,并配合所附附图,做详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例提供的一种信息发送方法的流程图;

图2示出了本申请实施例提供的生成set命令的流程图;

图3示出了本申请实施例提供的另一种信息发送方法的流程图;

图4示出了本申请实施例提供的一种信息发送装置的结构示意图;

图5示出了本申请实施例提供的计算机设备的硬件架构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

需要说明的是,当元件被称为“固定于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。相反,当元件被称作“直接在”另一元件“上”时,不存在中间元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在模板的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

现有技术中,一般通过redis的setnx方法,但是setnx方法不能设置过期时间,在setnx方法后需要再执行一个expx操作来释放锁,两个单独的命令是原子操作,放在一起就不是原子操作了。如果第一个命令执行完,系统出错了,没执行第二个命令,可能会造成死锁的现象。

有鉴于此,本发明的目的是为了克服现有技术中的不足,提供了一种信息发送方法、装置、计算机设备及计算机可读存储介质。

实施例1

如图1所示,为本申请实施例中的一种信息发送方法的流程图,本申请实施例提供的信息发送方法包括以下步骤S110~S130:

步骤S110,根据接收方手机号和短信内容,生成发送信息发送标识。

具体地,在本申请实施例中,短信服务平台提供短信发送接口给后台调用,后台通过调用短信服务平台提供的短信发送接口实现信息的发送。后台通过短信发送接口收到需要发送信息的请求后,获取需要发送的短信内容(包括文本、图片、语音、视频中的一种或多种组合)和接收方手机号,保存到本地数据库中。生成信息发送标识通过md5算法实现,对所述接收方手机号、所述短信内容按如下方式保存为文件:接收方手机号+短信内容,如:“12300001234验证码短信”。然后对保存的文件进行md5计算,得到32位的16进制的字符串(即md5值),将所述md5值作为所述信息发送标识。可以理解的是,md5算法仅为一种示例,也可以采用其他类似的加密算法来实现,这里不作限定。

相同文件的通过md5算法计算获得的md5值相同,因此在一段时间内收到相同的短信内容和接收方手机号,生成的信息发送标识也相同。因此,可以通过判断信息发送标识(md5值)判断是否在短时间内重复发送相同短信内容给同一个接收方手机号,进而避免了用户收到多个相同的短信,从而提高了用户体验。

步骤S120,对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中。

进一步地,对所述信息发送标识进行分布式锁,只有分布式锁成功后,才能将该信息发送标识存储到Redis数据库中。如果分布式锁失败,则表示该信息发送标识中的内容已被其他线程处理了,或者该信息发送标识中的信息是重复信息。如图2所示,上述分布式锁通过Redis数据库的set命令实现,所述set命令的生成步骤如下:

步骤S121,统计所述接收方手机号在预设时间内接收所述短信内容的次数,生成次数值。

步骤S122,统计所述接收方手机号接收所述短信内容超过所述预设时间的过期时间,生成超期值。

步骤S123,将所述次数值、所述超期值和所述预设时间进行整合,生成所述Redis数据库中设置的set命令。

具体地,统计所述接收方手机号在预设时间内接收所述短信内容的次数和所述接收方手机号接收所述短信内容超过所述预设时间的过期时间,将二者进行整合,生成所述Redis数据库中设置的set命令。例如接收方手机号在预设时间内接收所述短信内容的次数为8次,接收方手机号接收所述短信内容超过所述预设时间的过期时间为120秒,所述预设时间为60秒,则此set命令为(8,120,60)。

在本实施例中,通过对所述信息发送标识进行分布式锁,解决了多个短信平台线程发送短信存在重复发送相同短信给用户的问题,减少了短信发送费用、避免用户收到多个相同的短信内容,从而提高了用户体验。

步骤S130,对所述信息发送标识执行所述Redis数据库中设置的set命令,得到结果,若所述返回结果为通过,则发送所述短信内容给所述接收方手机号。

具体地,对所述信息发送标识执行所述Redis数据库中设置的相应的set命令,并得到一个返回结果,若所述返回结果为通过,则代表set命令执行成功,表明该信息发送标识中的内容进行了分布式锁,并且发送短信内容的时间没有超过预设时间,次数也在预设次数阈值范围内,接下来则发送所述短信内容给所述接收方手机号。若所述返回结果为不通过,则代表set命令执行失败,表明该信息发送标识中的内容没有进行分布式锁,或者发送短信内容的时间超过了预设时间,次数超过了预设次数阈值,此时向后台短信发送接口进行报错,并且不发送所述短信内容给所述接收方手机号。

设置的set命令简单易懂,不容易产生死锁,可以根据实际情况设置预设时间和预设次数阈值,有效解决了异常人员通过高并发手段对短信发送接口实行轰炸,从而短时间内重复发送相同短信内容给用户的问题,避免了用户收到多个相同的短信,从而提高了用户体验。

在一种可选的实施方式中,上述信息发送方法还包括:

当接收所述短信内容的所述次数值超过预设次数阈值时,触发短信告警对所述短信内容的发送方进行黑名单管理。

进一步地,当统计的接收方手机号在预设时间内接收所述短信内容的次数超过预设次数阈值时,表明该接收方手机号受到了异常人员的短信轰炸。此时触发短信告警对所述短信内容的发送方进行黑名单管理,将该发送方的IP地址列入黑名单,可以有效防止其他的接收方手机号遭到短信轰炸。

在一种可选的实施方式中,如图3所示,上述信息发送方法还包括:

步骤S210,将预设次数阈值存储在本地数据库中;

步骤S220,判断当前日期是否处于活动期,若是,则提高所述预设次数阈值;若否,则降低所述预设次数阈值。

可以理解的是,将预设次数阈值存储在本地数据库中,通过后台管理网站进行动态调整。判断当前日期是否处于活动期,即判断当前日期是否处于活动大促的时间段内,例如银行推出“办信用卡赠好礼”活动的时间段为2022年5月1日至2022年6月1日,那么2022年5月1日至2022年6月1日这一个月内都处于活动期。如果处于活动期,表明银行需要重点宣传该活动,那么需要发送的信息数量相应会增多,此时可以适当提高预设次数阈值;如果当前日期不是活动期,表明银行这段时间内没有活动需要宣传,那么则可以适当降低预设次数阈值。通过对预设次数阈值的动态调整,可以根据实际情况进行实时、灵活的配置,从而提高了用户体验。

本申请的实施例具有如下优点:

本申请实施例提供的信息发送方法,根据接收方手机号和短信内容,生成信息发送标识;对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中;对所述信息发送标识执行所述Redis数据库中设置的set命令,得到返回结果,若所述返回结果为通过,则发送所述短信内容给所述接收方手机号。通过上述方法,解决了异常人员通过高并发手段对短信发送接口实行轰炸,从而短时间内重复发送相同短信给用户的问题,避免了用户收到多个相同的短信,从而提高了用户体验。

实施例2

如图4所示,为本申请实施例中的一种信息发送装置200的结构示意图,其装置包括:

标识生成模块210,用于根据接收方手机号和短信内容,生成信息发送标识;

标识存储模块220,用于对所述信息发送标识增加分布式锁,并把加锁后的信息发送标识存储到Redis数据库中;

信息发送模块230,用于对所述信息发送标识执行所述Redis数据库中设置的set命令,得到返回结果,若所述返回结果为通过,则发送所述短信内容给所述接收方手机号。

可选地,上述信息发送装置还可以包括:

加密模块,用于对所述接收方手机号、所述短信内容进行md5加密,获得md5值,并将所述md5值作为所述信息发送标识。

可选地,上述信息发送装置还可以包括:

第一生成模块,用于统计所述接收方手机号在预设时间内接收所述短信内容的次数,生成次数值;

第二生成模块,用于统计所述接收方手机号接收所述短信内容超过所述预设时间的过期时间,生成超期值;

set命令生成模块,用于将所述次数值、所述超期值和所述预设时间进行整合,生成所述Redis数据库中设置的set命令。

可选地,上述信息发送装置还可以包括:

报错模块,用于若所述返回结果为不通过,则向后台短信发送接口进行报错,并不发送所述短信内容给所述接收方手机号。

可选地,上述信息发送装置还可以包括:

黑名单管理模块,用于当所述次数值超过预设次数阈值时,触发短信告警对所述短信内容的发送方进行黑名单管理。

可选地,上述信息发送装置还可以包括:

阈值存储模块,用于将所述预设次数阈值存储在本地数据库中;

动态调整模块,用于判断当前日期是否处于活动期,若是,则提高所述预设次数阈值;若否,则降低所述预设次数阈值。

本申请的实施例具有如下优点:

本申请实施例提供的信息发送装置,解决了异常人员通过高并发手段对短信发送接口实行轰炸,从而短时间内重复发送相同短信给用户的问题,避免了用户收到多个相同的短信,从而提高了用户体验。

实施例3

图5示出了本申请提供的计算机设备的硬件架构示意图,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现实施例1所述的信息发送方法的步骤。

本实施例中,计算机设备300是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5示,计算机设备300至少包括但不限于:可通过系统总线相互通信链接存储器310、处理器320、网络接口330。其中:

存储器310至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器310可以是计算机设备300的内部存储模块,例如该计算机设备300的硬盘或内存。在另一些实施例中,存储器310也可以是计算机设备300的外部存储设备,例如该计算机设备300上配备的插接式硬盘,智能存储卡(SmartMedia Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器310还可以既包括计算机设备300的内部存储模块也包括其外部存储设备。本实施例中,存储器310通常用于存储安装于计算机设备300的操作系统和各类应用软件,例如视频播放方法的程序代码等。此外,存储器310还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器320在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器320通常用于控制计算机设备300的总体操作,例如执行与计算机设备300进行数据交互或者通信相关的控制和处理等。本实施例中,处理器320用于运行存储器310中存储的程序代码或者处理数据。

网络接口330可包括无线网络接口或有线网络接口,该网络接口330通常用于在计算机设备300与其他计算机设备之间建立通信链接。例如,网络接口330用于通过网络将计算机设备300与外部终端相连,在计算机设备300与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。

需要指出的是,图5仅示出了具有部件310-330的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。

在本实施例中,存储于存储器310中的信息发送方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器320)所执行,以完成本发明。

实施例4

本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中信息发送方法的步骤。

本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。

在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

相关技术
  • 信息验证方法、装置、计算机设备及计算机可读存储介质
  • 信息的记录方法、装置、设备及计算机可读存储介质
  • 信息处理方法和装置、电子设备、计算机可读存储介质
  • 信息传输方法、装置、相关设备及计算机可读存储介质
  • 信息处理方法、装置、电子设备及计算机可读存储介质
  • 导航装置、探测信息发送方法、存储探测信息发送程序的计算机可读存储介质以及交通信息生成装置
  • 信息发送方法、装置、计算机装置及计算机可读存储介质
技术分类

06120115925726