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

一种基于Saas系统的缓存同步方法及系统

文献发布时间:2024-04-18 20:01:23


一种基于Saas系统的缓存同步方法及系统

技术领域

本申请涉及缓存计数的技术领域,尤其是涉及一种基于Saas系统的缓存同步方法及系统。

背景技术

在Saas程序开发中,我们经常会使用Redis来缓存计数,用于快速进行计数操作和了解未清信息数据。为了保证缓存数据的一致,我们通常会让微服务器来访问同一个Redis服务。

针对上述中的相关技术,本申请发现以下问题:在微服务器场景下,响应请求的可能是两个不同的微服务器,两个微服务器之间无法互相加锁,因此当我们使用相同账号,分别在不同的微服务器,同时去查看某一篇文章时,则有可能出现未清信息的数量减二的现象,从而导致Redis缓存计数不准确。

发明内容

本申请为了在Saas场景下,提高Redis缓存计数的准确度,提供了一种基于Saas系统的缓存同步方法及系统。

第一方面,本申请提供的一种基于Saas系统的缓存同步方法,采用如下的技术方案:

一种基于Saas系统的缓存同步方法,具体包括以下步骤:

进行Resid缓存计数,得到第一计数值,并判定所述第一计数值是否异常,所述第一计数值为未清信息的数量;

若所述第一计数值异常,则生成异常已清数据,所述异常已清数据包括n个第一已清信息,每个所述第一已清信息对应有一个微服务器,n为自然数,n≥1;

对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,所述第一异常信息对应有m个微服务器,m为自然数,m≥1;

将m个微服务器中最先查看所述第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对所述异常已清数据进行计数重载,并禁止其他微服务器进行计数重载;

在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

通过采用上述技术方案,首先,进行Resid缓存计数,并判定得到的第一计数值是否异常,所述第一计数值为未清信息的数量,若异常,则生成异常已清数据,所述异常已清数据包括n个第一已清信息,每个所述第一已清信息对应有一个微服务器,n为自然数,n≥1,然后,对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,所述第一异常信息对应有m个微服务器,m为自然数,m≥1,最后,将m个微服务器中最先查看所述第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对所述异常已清数据进行计数重载,并禁止其他微服务器进行计数重载,并在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

通过本地微服务器在进行计数重载过程中,禁止其他微服务器进行计数重载来避免人们在使用相同账号,分别在不同的微服务器中,同时去查看某一篇文章时,出现未清信息数据的数量减二的现象,从而提高在Saas场景下,Redis缓存计数的准确度。

可选的,所述进行Resid缓存计数,具体包括以下步骤:

获取预设的关系型数据库,所述关系型数据库包括信息总数据,所述信息总数据包括所述未清信息和已清信息;

对所述信息总数据进行Redis缓存计数。

通过采用上述技术方案,获取预设的关系型数据库中实时变化的信息总数据,并实时对所述信息总数据进行Redis缓存计数,有助于保证所述信息总数据的准确性。

可选的,一种基于Saas系统的缓存同步方法,还包括以下步骤:

在所述关系型数据库中,若所述未清信息的数量减少若干个,则所述已清信息的数量对应的增加若干个,若所述未清信息的数量增加若干个,则所述已清信息的数量保持不变。

通过采用上述技术方案,阐明了未清信息与已清信息的增减关系。

可选的,在获取所述关系型数据库之前,还包括以下步骤:

创建唯一键值,所述唯一键值用于标记所述已清信息对应的微服务器的数量、记录进行所述计数重载的开始时间和记录进行所述计数重载的微服务器的相关信息。

通过采用上述技术方案,创建用于标记所述已清信息对应的微服务器的数量、记录进行所述计数重载的开始时间和记录进行所述计数重载的微服务器的相关信息的唯一键值。

可选的,所述计数重载,具体包括以下步骤:

将所有内容相同的第一已清信息仅作为一个第一已清信息进行统计,并对所述异常已清数据进行重新统计,得到正常已清数据;

根据所述正常已清数据,在所述关系型数据库中,对所述信息总数据重新进行Redis缓存计数。

通过采用上述技术方案,通过进行所述计数重载,对所述信息总数据重新进行Redis缓存计数。

可选的,所述计数重载还包括设置本地检测间隔时间,所述判定Resid缓存计数是否异常之后,还包括以下步骤:

当时间达到设置的所述本地检测间隔时间时,判定在所述本地检测间隔时间内是否进行过计数重载;

若在所述本地检测间隔时间内进行过计数重载,则不需要进行本地检测,并获取在所述本地检测间隔时间内,最后一次进行计数重载的时间,并从所述最后一次进行计数重载的时间开始,按所述本地检测间隔时间,计算进行下一次本地检测的剩余时间;

若在所述本地检测间隔时间内未进行过计数重载,则需要进行本地检测。

通过采用上述技术方案,首先,当时间达到设置的所述本地检测间隔时间时,判定在所述本地检测间隔时间内是否进行过所述计数重载,接着,若在所述本地检测间隔时间内进行过所述计数重载,则不需要进行所述计数重载,并获取在所述本地检测间隔时间内,最后一次进行所述计数重载的时间,并从所述最后一次进行所述计数重载的时间开始,按所述本地检测间隔时间,计算进行下一次本地检测的剩余时间,并结束本次本地检测,若在所述本地检测间隔时间内未进行过所述计数重载,则需要进行所述计数重载。

设置本地检测,有助于在一定时间内将关系数据库中的数量在不停变化的信息总数据的进行重新统计并更新,保障Redis缓存计数的良好运行状态爱,避免数据无序堆积的现象发生。

可选的,所述需要进行本地检测之后,具体包括以下步骤:

在所述关系型数据库中,对所述已清信息进行计数重载,并禁止其他微服务器进行计数重载;

在进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第三计数值。

通过采用上述技术方案,在需要进行本地检测后,进行本地检测。

第二方面,本申请提供的一种基于Saas系统的缓存同步系统,采用如下的技术方案:

一种基于Saas系统的缓存同步系统,包括执行模块、异常判定模块、异常数据生成模块、异常读取模块和计数重载模块;

所述执行模块用于执行Resid缓存计数,得到第一计数值,所述第一计数值为未清信息的数量,所述执行模块与所述异常判定模块、所述异常数据生成模块、所述异常读取模块和所述计数重载模块电连接;

所述异常判定模块用于判定所述第一计数值是否异常;

所述异常数据生成模块用于在所述第一计数值异常时生成异常已清数据,所述异常已清数据包括n个第一已清信息,每个所述第一已清信息对应有一个微服务器,n为自然数,n≥1;

所述异常读取模块用于对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,所述第一异常信息对应有m个微服务器,m为自然数,m≥1;

所述计数重载模块用于将m个微服务器中最先查看所述第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对所述异常已清数据进行计数重载,并禁止其他微服务器进行计数重载;

所述计数重载模块还用于在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

通过采用上述技术方案,首先,通过所述执行模块进行Resid缓存计数,并通过所述异常判定模块判定Resid缓存计数得到的第一计数值是否异常,若异常,则通过所述异常数据生成模块,生成异常已清数据,所述异常已清数据包括n个第一已清信息,每个所述第一已清信息对应有一个微服务器,n为自然数,n≥1,然后,通过所述异常读取模块对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,最后通过所述所述计数重载模块,将m个微服务器中最先查看所述第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对所述异常已清数据进行计数重载,并禁止其他微服务器进行计数重载,并在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

第三方面,本申请还提供一种智能终端,采用如下的技术方案:

一种智能终端,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器进行时实现所述一种基于Saas系统的缓存同步方法。

第四方面,本申请还提供一种计算机可读存储介质,采用如下的技术方案:

一种计算机可读存储介质,包括可读存储介质及存储在所述可读存储介质上运行的计算机程序,所述计算机程序由处理器加载并进行以实现所述一种基于Saas系统的缓存同步方法。

综上所述,本申请包括以下至少一种有益技术效果:

1、通过本地微服务器在进行计数重载过程中,禁止其他微服务器进行计数重载来避免人们在使用相同账号,分别在不同的微服务器中,同时去查看某一篇文章时,出现未清信息数据的数量减二的现象,从而提高在Saas场景下,Redis缓存计数的准确度;

2、实时对所述信息总数据进行Redis缓存计数,有助于保证所述信息总数据的准确性;

3、设置本地检测,有助于在一定时间内将关系数据库中的数量在不停变化的信息总数据的进行重新统计并更新,保障Redis缓存计数的良好运行状态爱,避免数据无序堆积的现象发生。

附图说明

图1是本申请实施例中一种基于Saas系统的缓存同步系统的整体结构示意图;

图2是本申请实施例中一种基于Saas系统的缓存同步方法的整体流程示意图;

图3是本申请实施例中判定Resid缓存计数是否异常之后的整体流程示意图;

附图标记说明:

1、执行模块;2、异常判定模块;3、异常数据生成模块;4、异常读取模块;5、计数重载模块。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细说明。

本申请一个实施例公开了一种基于Saas系统的缓存同步系统,参照图1,包括执行模块1、异常判定模块2、异常数据生成模块3、数量判定模块4和计数重载模块5;

执行模块1用于执行Resid缓存计数,得到第一计数值,第一计数值为未清信息的数量,执行模块1与异常判定模块2、异常数据生成模块3、数量判定模块4和计数重载模块5电连接;

异常判定模块2用于判定第一计数值是否异常;

异常数据生成模块3用于在第一计数值异常时生成异常已清数据,异常已清数据包括n个第一已清信息,每个第一已清信息对应有一个微服务器,n为自然数,n≥1;

数量判定模块4用于对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,第一异常信息对应有m个微服务器,m为自然数,m≥1;

计数重载模块5用于将m个微服务器中最先查看第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对异常已清数据进行计数重载,并禁止其他微服务器进行计数重载;

计数重载模块5还用于在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

在实施中,首先,通过执行模块进行Resid缓存计数,并通过异常判定模块判定Resid缓存计数得到的第一计数值是否异常,若异常,则通过异常数据生成模块,生成异常已清数据,异常已清数据包括n个第一已清信息,每个第一已清信息对应有一个微服务器,n为自然数,n≥1,然后,通过异常读取模块对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,最后通过计数重载模块,将m个微服务器中最先查看第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对异常已清数据进行计数重载,并禁止其他微服务器进行计数重载,并在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

本申请一个实施例还公开了一种基于Saas系统的缓存同步方法,参照图2,具体包括以下步骤:

S10、进行Resid缓存计数,得到第一计数值,并判定第一计数值是否异常,第一计数值为未清信息的数量;

在实施中,进行Resid缓存计数,具体包括以下步骤:

获取预设的关系型数据库,关系型数据库包括信息总数据,信息总数据包括未清信息和已清信息;

对信息总数据进行Redis缓存计数。

需要说明的是,在Redis中的计数值,实际是在关系型数据库中统计后的结果,同时是在MySQL中经过SQL查询统计出来的结果,而计数重载就是重新统计该值并刷新Redis中的数据。

在实施中,在获取关系型数据库之前,还包括以下步骤:

创建唯一键值,唯一键值用于标记已清信息对应的微服务器的数量、记录进行计数重载的开始时间和记录进行计数重载的微服务器的相关信息。

需要说明的是,可以通过设置一个标记量IsReload来判定同时查看同一条第一已清信息的微服务器的数量,检测IsReload,当IsReload为1时,表示只有一个微服务器查看第一已清信息,若IsReload大于1,则表示同时查看同一条第一已清信息的微服务器的数量不只一个。

还需要说明的是,唯一键值是单个字段或字段组合的,以确保要存储到列中的所有值都是唯一的,唯一键值中,可以用标记量IsReload来标记同时查看同一条第一已清信息的微服务器的数量,可以用ExecDate来表示记录进行计数重载的开始时间,可以用Reload来表示记录进行计数重载的微服务器的相关信息。

在实施中,参照图3,计数重载还包括设置本地检测间隔时间,判定Resid缓存计数是否异常之后,还包括以下步骤:

A10、当时间达到设置的本地检测间隔时间时,判定在本地检测间隔时间内是否进行过计数重载;

A20、若在本地检测间隔时间内进行过计数重载,则不需要进行本地检测,并获取在本地检测间隔时间内,最后一次进行计数重载的时间,并从最后一次进行计数重载的时间开始,按本地检测间隔时间,计算进行下一次本地检测的剩余时间,若在本地检测间隔时间内未进行过计数重载,则需要进行本地检测。

需要说明的是,本地微服务器进行本地检测本质上是本地微服务器不依赖工作人员,在预设好的时间自行地进行计数重载,本地检测间隔时间可以在注册计数重载的内容的时候自行设置。

还需要说明的是,当预设的本地检测间隔时间内,未进行过计数重载,就需要通过本地检测来进行计数重载,以免数据堆积,而在预设的本地检测间隔时间内,进行过计数重载,则需要从最近一次进行计数重载的时间,重新按照预设的本地检测间隔时间,计算下一次本地检测的剩余时间,并结束本次本地检测。

在实施中,需要进行本地检测之后,具体包括以下步骤:

在关系型数据库中,对已清信息进行计数重载,并禁止其他微服务器进行计数重载;

在进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第三计数值。

需要说明的是,在进行本地检测的过程中,实际上是本地微服务器自行进行计数重载,所以工作人员此时是不能通过本地微服务器进行计数重载的,而本地微服务器自行进行计数重载,为了避免其他微服务器进行计数重载,所以要禁止其他微服务器进行计数重载。

在实施中,一种基于Saas系统的缓存同步方法,还包括以下步骤:

在关系型数据库中,若未清信息的数量减少若干个,则已清信息的数量对应的增加若干个,若未清信息的数量增加若干个,则已清信息的数量保持不变。

需要说明的是,阐述了未清信息与已清信息数量增减的关系,例如,当未清信息数量减少5条,已清信息对应增加5条,当当未清信息数量增加5条,已清信息数量保持不变。

S20、若第一计数值异常,则生成异常已清数据,异常已清数据包括n个第一已清信息,每个第一已清信息对应有一个微服务器,n为自然数,n≥1;

需要说明的是,异常为Resid缓存计数中同一条第一已清信息被不只一个微服务器同时查看。

S30、对n个第一已清信息的内容进行读取,将内容相同的第一已清信息标记为第一异常信息,第一异常信息对应有m个微服务器,m为自然数,m≥1;

S40、将m个微服务器中最先查看第一已清信息的微服务器作为本地微服务器,并通过本地微服务器对异常已清数据进行计数重载,并禁止其他微服务器进行计数重载,并在本地微服务器进行完计数重载之后,解除对其他微服务器的禁止,并获取计数重载后生成的第二计数值。

需要说明的是,本地微服务器在进行计数重载过程中,禁止其他微服务器进行计数重载,同理的,其他微服务器在进行计数重载过程中,禁止本地微服务器进行计数重载,这避免多个微服务器在查阅同一个未清信息数据的过程中,同时进行计数重载,出现未清信息数据的数量减二的现象。

在实施中,计数重载,具体包括以下步骤:

将所有内容相同的第一已清信息仅作为一个第一已清信息进行统计,并对异常已清数据进行重新统计,得到正常已清数据;

根据正常已清数据,在关系型数据库中,对信息总数据重新进行Redis缓存计数。

需要说明的是,若有若干个微服务器同时对相同的一条未清信息进行查阅,在关系型数据库中的信息总数据被Redis缓存计数操作后,这一条未清信息不会被以两条及以上的未清信息的形式转变成已清信息,即无论有多少的微服务器同时对相同的一条未清信息进行查阅,这一条未清信息只会被进行一次计数重载,Redis缓存计数操作完成后,只是显示未清信息减一。

在本申请的一个实施例中,注册计数重载的内容时,设置本地检测间隔时间为5分钟,首先,判定了Resid缓存计数发生异常,存在10条异常的已清信息,并判定了本地微服务器未在进行本地检测,然后,根据上述判定的两个结果,对发生异常的10条已清信息是否分别被不只一个微服务器查看进行判定,判定了其中1条发生异常的已清信息被3个微服务器查看,接着,将3个微服务器中最先查看这一条发生异常的已清信息的微服务器作为本地微服务器,并通过本地微服务器对,通过Resid缓存计数得到的第一计数值,进行计数重载,并禁止其他微服务器进行计数重载,再接着,在本地微服务器进行完计数重载之后,解除对其他微服务器进行计数重载的禁止,最后,从Redis中读取本地微服务器进行计数重载后Redis中的第二计数值。

在本申请的另一个实施例中,注册计数重载的内容时,设置本地检测间隔时间为5分钟,首先,判定了Resid缓存计数发生异常,存在10条异常的已清信息,并判定了本地微服务器在进行本地检测但因为在5分钟内进行过计数重载,所以不需要进行计数重载,然后,根据上述判定的两个结果,对发生异常的10条已清信息是否分别被不只一个微服务器查看进行判定,判定了其中1条发生异常的已清信息被3个微服务器查看,接着,将3个微服务器中最先查看这一条发生异常的已清信息的微服务器作为本地微服务器,并通过本地微服务器对,通过Resid缓存计数得到的第一计数值,进行计数重载,并禁止其他微服务器进行计数重载,再接着,在本地微服务器进行完计数重载之后,解除对其他微服务器进行计数重载的禁止,最后,从Redis中读取本地微服务器进行计数重载后Redis中的第二计数值。

在本申请的一个实施例中,注册计数重载的内容时,设置本地检测间隔时间为5分钟,首先,判定了Resid缓存计数发生异常,存在10条异常的已清信息,并判定了本地微服务器在进行本地检测,并因为在5分钟内未进行过计数重载,所以需要进行计数重载,然后,根据上述判定的两个结果,对发生异常的10条已清信息是否分别被不只一个微服务器查看进行判定,判定了其中1条发生异常的已清信息被3个微服务器查看,接着,将3个微服务器中最先查看这一条发生异常的已清信息的微服务器作为本地微服务器,并通过本地微服务器对,通过Resid缓存计数得到的第一计数值,进行计数重载,并禁止其他微服务器进行计数重载,再接着,在本地微服务器进行完计数重载之后,解除对其他微服务器进行计数重载的禁止,最后,从Redis中读取进行本地检测后Redis中的第三计数值。

基于上述同一发明构思,本申请又一实施例还公开一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集能够由处理器加载并进行以实现上述方法实施例提供的一种基于Saas系统的缓存同步方法的步骤。

计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现,例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不进行。另一点,所显示或讨论的相互之间的耦合或耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)进行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

以上,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本申请的方法及其核心思想,不应理解为对本申请的限制。本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。

相关技术
  • 一种变径可调节式连接卡箍
  • 一种变径球座式全通径可溶压裂滑套
  • 一种装配式剪力墙套筒连接节点的半破损X射线检测方法
  • 一种便携式伸缩连接杆套筒
  • 一种变径式密封胶垫闭水套筒连接结构
  • 一种变径式密封胶垫闭水套筒连接结构
技术分类

06120116551441