一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于redis缓存的智能重发方法、系统及计算机可读存储介质与流程

2022-04-16 13:36:39 来源:中国专利 TAG:


1.本发明涉及服务器缓存技术领域,更具体的,涉及一种基于redis缓存的智能重发方法、系统及计算机可读存储介质。


背景技术:

2.随着计算机技术和芯片技术的飞速发展,智能家居在国内的发展也迅速起来,服务器是实现智能家居非常重要的一环。服务器负责跟智能设备进行通信,同步或者下发指令以达到智能家居的目的。服务器的编写和算法决定了整个系统的功能和效率。
3.现有的智能家居服务器下发指令时往往只执行一次,简单直白,但也存在一定的问题。当遇到网络波动,设备通信不良好或者设备数量较多的时候指令可能无法正常执行。也就是我们俗称的“丢包”。若多个设备中只有个别设备执行失败,只能重新执行场景控制所有设备执行,效率低的同时还增加了服务器的负担。这些不可预知的问题可能导致用户使用时体验变差。
4.现有的服务器指令下发方式,服务器负担大,执行效率低,用户体验差,因此亟需一种基于redis缓存的智能重发方法。


技术实现要素:

5.鉴于上述问题,本发明的目的是提供一种基于redis缓存的智能重发方法方法、系统及计算机可读存储介质,能够降低服务器的负担,提高远端设备的控制成功率。
6.本发明第一方面提供了一种基于redis缓存的智能重发方法,包括以下步骤:
7.计算场景执行时间,所述场景包括一个或多个设备执行队列,每个场景包含在项目中,每个项目包含一个或多个场景;
8.在场景执行时将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单;
9.根据名单中设备下发第二轮指令,同时解除当前场景所在项目的id锁定。
10.本方案中,所述计算场景执行时间具体步骤为:
11.将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;
12.设置场景执行时间的初始值和每个设备执行时间,对设备列表进行循环计算。
13.本方案中,对设备列表进行循环计算具体为:
14.若场景执行时间小于该组延迟时间时表示着当延时时间到时,之前的设备已经全部执行完,新的场景执行时间为:
15.新的场景执行时间=当前延时时间 该组设备总数
×
每个设备执行时间
16.若场景执行时间大于改组延迟时间,表示延时时间到时,还有正在执行的设备该组设备需要等之前的设备执行完才能执行,则新的场景执行时间为:
17.新的场景执行时间=旧执行时间 该组设备总数
×
每个设备执行时间。
18.本方案中,当场景的项目id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响。
19.本方案中,在启动检测线程睡眠场景执行时间后释放当前线程避免用户卡顿。
20.本方案中,当服务器收到设备回包时会查询缓存并删除该缓存。
21.本方案中,在根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定后,若该项目还有其他暂存的场景,则执行新场景;若需要第三轮指令可以重复继续检测回包,若不需要则将清除redis缓存中的数据,结束本次场景执行。
22.本发明第二方面提供一种基于redis缓存的智能重发系统,包括存储器和处理器,所述存储器中包括基于redis缓存的智能重发方法程序,所述基于redis缓存的智能重发方法程序被所述处理器执行时实现如下步骤:
23.计算场景执行时间,所述场景包括一个或多个设备执行队列,每个场景包含在项目中,每个项目包含一个或多个场景;
24.在执行场景时,将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单;
25.根据名单中设备下发第二轮指令,同时解除当前场景所在项目的id锁定。
26.本方案中,所述计算场景执行时间具体步骤为:
27.将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;
28.设置场景执行时间的初始值和每个设备执行时间,对设备列表进行循环计算。
29.本发明第三方面提供一种计算机可读存储介质,所述计算机可读存储介质中包括基于redis缓存的智能重发方法程序,所述基于redis缓存的智能重发方法程序被处理器执行时,实现所述的一种基于redis缓存的智能重发方法的步骤。
30.本发明公开的一种基于redis缓存的智能重发方法和系统及计算机可读存储介质,通过智能计算场景执行时间,将设备序列号及场景执行时间存入redis缓存,检测设备的回包情况得到相应的设备名单,根据回包情况再次对相应的设备下发执行指令,降低了服务器负担,提高了指令的执行效率和设备控制的成功率。
附图说明
31.图1示出了本技术一种基于redis缓存的智能重发方法的流程图。
32.图2示出了本技术计算场景执行时间流程图。
33.图3示出了本技术一种基于redis缓存的智能重发方法系统的框图。
具体实施方式
34.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
35.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开
的具体实施例的限制。
36.图1示出了本技术一种基于redis缓存的智能重发方法的流程图。
37.如图1所示,本技术公开了一种基于redis缓存的智能重发方法,包括以下步骤:
38.s102,计算场景执行时间,所述场景包括一个或多个设备执行队列,每个场景包含在项目中,每个项目包含一个或多个场景;
39.s104,在执行场景时,将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单;
40.s106,根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定。
41.需要说明的是,本发明方法适用于基于服务器和远端设备构建的系统,如智能家居系统,在具体的实施例中,因网关下发信号需要时间。所以并不能直接将场景的最大延迟时间认为是该场景的执行时,首先计算场景执行时间,然后将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单,根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定。
42.图2示出了计算场景执行时间流程图。
43.根据本发明实施例,所述计算场景执行时间具体步骤为:
44.s202,将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;
45.s204,设置场景执行时间的初始值和每个设备执行时间,对设备列表进行循环计算。
46.需要说明的是,本发明中首先将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;例如执行场景内有5台设备,2台设备的延迟时间为3000毫秒,2台设备的延迟时间为4000毫秒,1台设备的延迟为5000毫秒,则将所有设备按照延迟从低到高排列构成设备列表。在一个具体的实施例中,场景执行时间的初始值为0,每个设备的执行时间设置为130毫秒,然后对设备列表进行循环计算。
47.根据本发明实施例,对设备列表进行循环计算具体为:
48.若场景执行时间小于该组延迟时间时表示着当延时时间到时,之前的设备已经全部执行完,新的场景执行时间为:
49.新的场景执行时间=当前延时时间 该组设备总数
×
每个设备执行时间
50.若场景执行时间大于该组延迟时间,表示延时时间到时,还有正在执行的设备该组设备需要等之前的设备执行完才能执行,则新的场景执行时间为:
51.新的场景执行时间=旧执行时间 该组设备总数
×
每个设备执行时间。
52.需要说明的是,例如场景中有10个设备每个设备执行需要200ms,前3个设备立即执行,序号为4到9的设备延迟1000ms执行,最后一个设备执行需要延迟2000ms执行。即场景分为三组延迟方式。计算第一组时,当前延时时间为0ms,旧执行时间为0ms,故套用第一种计算方式,新场景执行时间为0ms 3*200ms=600ms。计算第二组时,当前延时时间为1000ms,旧执行时间为600ms使用第一种算法,得到新场景执行时间为1000ms 6*200ms=2200ms。计算第三组时,旧执行时间为2200ms大于当前延时时间,故使用第二种计算方式,
新的场景执行时间为2200ms 1*200ms=2400ms;得到场景全部执行结束需要2400ms。
53.根据本发明实施例,当场景的项目id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响。
54.需要说明的是,在一个具体的实施例中,每个项目有若干场景,例如在智能家居系统中,灯具照明、空调冷暖、窗帘采光都对应着设备的不同场景,当项目的id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响,例如当前已经锁定了执行场景包括房间内的照明开关,若还存在打开空调的执行指令,则会先将空调打开指令暂存,避免多个场景同时执行互相影响。
55.根据本发明实施例,在启动检测线程睡眠场景执行时间后释放当前线程避免用户卡顿。
56.需要说明的是,计算完场景执行时间后,释放当前跟用户连接的线程避免用户卡顿,并新开启一个线程延迟场景执行时间后对场景下的设备进行回包统计。
57.根据本发明实施例,当服务器收到设备回包时会查询缓存并删除该缓存。
58.需要说明的是,当场景中的设备执行完服务器下发的指令后,设备会返回数据包,服务器会根据设备返回的数据包删除对应的缓存。
59.根据本发明实施例,在根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定后,若该项目还有其他暂存的场景,则执行新场景;若需要第三轮指令可以重复继续检测回包,若不需要则将清除redis缓存中的数据,结束本次场景执行。
60.需要说明的是,在本发明本实施例中,服务器根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定,此时该项目还有其他暂存的场景,则执行新场景,如上所述的还有空调开启的指令,则继续执行空调开启;如果若需要第三轮指令可以重复继续检测回包,在一个具体的实施例中,是否需要启动第三轮指令的下发,可以根据第二轮执行中检测设备回包的情况来确定,若设备类表中所有设备均返回包,则无需启动第三轮指令的下发,则将清除redis缓存中的数据,结束本次场景执行若存在设备未返回包,则第三轮指令的下发。
61.图3示出了一种基于redis缓存的智能重发系统框图。
62.本发明第二方面提供一种基于redis缓存的智能重发系统,包括存储器31和处理器32,所述存储器中包括基于redis缓存的智能重发方法程序,所述基于redis缓存的智能重发方法程序被所述处理器执行时实现如下步骤:
63.计算场景执行时间,所述场景包括一个或多个设备执行队列,每个场景包含在项目中,每个项目包含一个或多个场景;
64.在执行场景时将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单;
65.根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定。
66.需要说明的是,本发明方法适用于基于服务器和远端设备构建的系统,如智能家居系统,在具体的实施例中,因网关下发信号需要时间。所以并不能直接将场景的最大延迟时间认为是该场景的执行时,首先计算场景执行时间,然后将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程
睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单,根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定。
67.根据本发明实施例,所述计算场景执行时间具体步骤为:
68.将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;
69.设置场景执行时间的初始值和每个设备执行时间,对设备列表进行循环计算。
70.需要说明的是,本发明中首先将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;例如执行场景内有5台设备,2台设备的延迟时间为3000毫秒,2台设备的延迟时间为4000毫秒,1台设备的延迟为5000毫秒,则将所有设备按照延迟从低到高排列构成设备列表。在一个具体的实施例中,场景执行时间的初始值为0,每个设备的执行时间设置为130毫秒,然后对设备列表进行循环计算。
71.根据本发明实施例,对设备列表进行循环计算具体为:
72.若场景执行时间小于该组延迟时间时表示着当延时时间到时,之前的设备已经全部执行完,新的场景执行时间为:
73.新的场景执行时间=当前延时时间 该组设备总数
×
每个设备执行时间
74.若场景执行时间大于该组延迟时间,表示延时时间到时,还有正在执行的设备该组设备需要等之前的设备执行完才能执行,则新的场景执行时间为:
75.新的场景执行时间=旧执行时间 该组设备总数
×
每个设备执行时间。
76.需要说明的是,例如场景中有10个设备每个设备执行需要200ms,前3个设备立即执行,序号为4到9的设备延迟1000ms执行,最后一个设备执行需要延迟2000ms执行。即场景分为三组延迟方式。计算第一组时,当前延时时间为0ms,旧执行时间为0ms,故套用第一种计算方式,新场景执行时间为0ms 3*200ms=600ms。计算第二组时,当前延时时间为1000ms,旧执行时间为600ms使用第一种算法,得到新场景执行时间为1000ms 6*200ms=2200ms。计算第三组时,旧执行时间为2200ms大于当前延时时间,故使用第二种计算方式,新的场景执行时间为2200ms 1*200ms=2400ms;得到场景全部执行结束需要2400ms。
77.根据本发明实施例,当场景的项目id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响。
78.需要说明的是,在一个具体的实施例中,每个项目有若干场景,例如在智能家居系统中,灯具照明、空调冷暖、窗帘采光都对应着设备的不同场景,当项目的id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响,例如当前已经锁定了执行场景包括房间内的照明开关,若还存在打开空调的执行指令,则会先将空调打开指令暂存,避免多个场景同时执行互相影响。
79.根据本发明实施例,在启动检测线程睡眠场景执行时间后释放当前线程避免用户卡顿。
80.需要说明的是,计算完场景执行时间后,释放当前跟用户连接的线程避免用户卡顿,并新开启一个线程延迟场景执行时间后对场景下的设备进行回包统计。
81.根据本发明实施例,当服务器收到设备回包时会查询缓存并删除该缓存。
82.需要说明的是,当场景中的设备执行完服务器下发的指令后,设备会返回数据包,服务器会根据设备返回的数据包删除对应的缓存。
83.根据本发明实施例,在根据名单中设备下发第二轮指令,同时解除当前场景的项
目id锁定后,若该项目还有其他暂存的场景,则执行新场景;若需要第三轮指令可以重复继续检测回包,若不需要则将清除redis缓存中的数据,结束本次场景执行。
84.需要说明的是,在本发明实施例中,服务器根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定,此时该项目还有其他暂存的场景,则执行新场景,如上所述的还有空调开启的指令,则继续执行空调开启;如果若需要第三轮指令可以重复继续检测回包,在一个具体的实施例中,是否需要启动第三轮指令的下发,可以根据第二轮执行中检测设备回包的情况来确定,若设备类表中所有设备均返回包,则无需启动第三轮指令的下发,则将清除redis缓存中的数据,结束本次场景执行若存在设备未返回包,则第三轮指令的下发。
85.本发明第三方面提供一种计算机可读存储介质,所述计算机可读存储介质中包括基于redis缓存的智能重发方法程序,所述基于redis缓存的智能重发方法程序被处理器执行时,实现所述的一种基于redis缓存的智能重发方法的步骤,具体如下:
86.计算场景执行时间,所述场景包括一个或多个设备执行队列,每个场景包含在项目中,每个项目包含一个或多个场景;
87.在执行场景时将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单;
88.根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定。
89.需要说明的是,本发明方法适用于基于服务器和远端设备构建的系统,如智能家居系统,在具体的实施例中,因网关下发信号需要时间。所以并不能直接将场景的最大延迟时间认为是该场景的执行时,首先计算场景执行时间,然后将场景内的设备序列号和场景计算时间存入redis缓存,锁定场景项目的id,启动检测线程睡眠场景执行时间,检测线程睡眠结束后会根据场景设备依次查询缓存,若缓存还在则表示该设备执行失败,计入二轮指令发送名单,根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定。
90.根据本发明实施例,所述计算场景执行时间具体步骤为:
91.将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;
92.设置场景执行时间的初始值和每个设备执行时间,对设备列表进行循环计算。
93.需要说明的是,本发明中首先将执行场景内的设备根据各自的延迟时间分组,根据延时的高低从低到高排列;例如执行场景内有5台设备,2台设备的延迟时间为3000毫秒,2台设备的延迟时间为4000毫秒,1台设备的延迟为5000毫秒,则将所有设备按照延迟从低到高排列构成设备列表。在一个具体的实施例中,场景执行时间的初始值为0,每个设备的执行时间设置为130毫秒,然后对设备列表进行循环计算。
94.根据本发明实施例,对设备列表进行循环计算具体为:
95.若场景执行时间小于该组延迟时间时表示着当延时时间到时,之前的设备已经全部执行完,新的场景执行时间为:
96.新的场景执行时间=当前延时时间 该组设备总数
×
每个设备执行时间
97.若场景执行时间大于该组延迟时间,表示延时时间到时,还有正在执行的设备该组设备需要等之前的设备执行完才能执行,则新的场景执行时间为:
98.新的场景执行时间=旧执行时间 该组设备总数
×
每个设备执行时间。
99.需要说明的是,例如场景中有10个设备每个设备执行需要200ms,前3个设备立即执行,序号为4到9的设备延迟1000ms执行,最后一个设备执行需要延迟2000ms执行。即场景分为三组延迟方式。计算第一组时,当前延时时间为0ms,旧执行时间为0ms,故套用第一种计算方式,新场景执行时间为0ms 3*200ms=600ms。计算第二组时,当前延时时间为1000ms,旧执行时间为600ms使用第一种算法,得到新场景执行时间为1000ms 6*200ms=2200ms。计算第三组时,旧执行时间为2200ms大于当前延时时间,故使用第二种计算方式,新的场景执行时间为2200ms 1*200ms=2400ms;得到场景全部执行结束需要2400ms。
100.根据本发明实施例,当场景的项目id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响。
101.需要说明的是,在一个具体的实施例中,每个项目有若干场景,例如在智能家居系统中,灯具照明、空调冷暖、窗帘采光都对应着设备的不同场景,当项目的id锁定后,若还有该项目的场景执行指令,则将指令暂存避免多个场景同时执行互相影响,例如当前已经锁定了执行场景包括房间内的照明开关,若还存在打开空调的执行指令,则会先将空调打开指令暂存,避免多个场景同时执行互相影响。
102.根据本发明实施例,在启动检测线程睡眠场景执行时间后释放当前线程避免用户卡顿。
103.需要说明的是,计算完场景执行时间后,释放当前跟用户连接的线程避免用户卡顿,并新开启一个线程延迟场景执行时间后对场景下的设备进行回包统计。
104.根据本发明实施例,当服务器收到设备回包时会查询缓存并删除该缓存。
105.需要说明的是,当场景中的设备执行完服务器下发的指令后,设备会返回数据包,服务器会根据设备返回的数据包删除对应的缓存。
106.根据本发明实施例,在根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定后,若该项目还有其他暂存的场景,则执行新场景;若需要第三轮指令可以重复继续检测回包,若不需要则将清除redis缓存中的数据,结束本次场景执行。
107.需要说明的是,在本发明实施例中,服务器根据名单中设备下发第二轮指令,同时解除当前场景的项目id锁定,此时该项目还有其他暂存的场景,则执行新场景,如上所述的还有空调开启的指令,则继续执行空调开启;如果若需要第三轮指令可以重复继续检测回包,在一个具体的实施例中,是否需要启动第三轮指令的下发,可以根据第二轮执行中检测设备回包的情况来确定,若设备类表中所有设备均返回包,则无需启动第三轮指令的下发,则将清除redis缓存中的数据,结束本次场景执行若存在设备未返回包,则第三轮指令的下发。
108.本发明公开的一种基于redis缓存的智能重发方法和系统及计算机可读存储介质,通过智能计算场景执行时间,将设备序列号及场景执行时间存入redis缓存,检测设备的回包情况得到相应的设备名单,根据回包情况再次对相应的设备下发执行指令,降低了服务器负担,提高了指令的执行效率和设备控制的成功率。
109.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部
分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
110.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
111.另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
112.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
113.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献