一种基于redis的风机数据读写方法、装置、系统和介质
技术领域
1.本发明属于风机数据读写技术领域,特别涉及一种基于redis的风机数据读写方法、装置、系统和介质。
背景技术:2.随着风电技术的发展,风机的实时监控变的非常重要,现在的监控系统有很大的局限性,例如可扩展性不强,数据读写速度慢,运行在windows操作系统安全性不够高等问题。
技术实现要素:3.针对上述问题,本发明提出一种基于redis的风机数据读写方法,包括写入方法和读取方法;
4.写入方法包括:
5.采集风机数据;
6.存储风机数据至基于linux系统建立的mysql数据库中;
7.获取mysql数据库中日志信息;
8.存储日志信息至基于linux系统建立的redis数据库中;
9.读取方法包括:
10.接收用户输入信息;
11.基于用户输入信息判断redis数据库中有无第一匹配数据,
12.若有,基于第一匹配数据在mysql数据库中获取第二匹配数据,
13.若无,基于用户输入信息在mysql数据库查找第二匹配数据。
14.优选地,所述存储风机数据至基于linux系统建立的mysql数据库中具体包括:
15.通过计算机语言读取modbus协议或udp协议,存储风机数据至xml文件或json文件中,存储xml文件或json文件至基于linux系统建立的mysql数据库中。
16.优选地,所述基于第一匹配数据在mysql数据库中获取第二匹配数据具体包括:
17.读取modbus协议或udp协议,获取modbus地址或udp地址,基于第一匹配数据和modbus地址,或第一匹配数据和udp地址,在mysql数据库中获取第二匹配数据。
18.优选地,若基于用户输入信息判断redis数据库中无第一匹配数据,基于用户输入信息在mysql数据库查找到第二匹配数据;
19.读取第二匹配数据的日志信息,存储第二匹配数据的日志信息至redis数据库中。
20.优选地,基于websocket技术发送第二匹配数据。
21.优选地,所述日志信息为二进制日志信息。
22.优选地,所述基于用户输入信息判断redis数据库中有无第一匹配数据之前,还包括:
23.检查用户权限,若权限符合,接收用户输入信息,若权限不符合,拒绝用户输入信
息。
24.本发明还提出一种风机数据读写装置,包括采集单元,用于采集风机数据;
25.第一存储单元,用于存储风机数据至基于linux系统建立的mysql数据库中;
26.日志获取单元,用于获取mysql数据库中日志信息;
27.第二存储单元,用于存储日志信息至基于linux系统建立的redis数据库中;
28.接收单元,用于接收用户输入信息;
29.判断单元,用于基于用户输入信息判断redis数据库中有无第一匹配数据,
30.第一获取单元,用于基于第一匹配数据在mysql数据库中获取第二匹配数据,
31.第二获取单元,基于用户输入信息在mysql数据库查找第二匹配数据。
32.本发明还提出一种风机数据读写系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述方法的步骤。
33.本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述方法的步骤。
34.本发明的基于redis的风机数据读写方法、装置、系统和介质,基于linux系统建立redis数据库和mysql数据库,结合redis数据库读写速度快和mysql数据库存储量大的优点,实现风机数据的高效读写,并且mysql数据库可扩展性好、linux系统安全性能高。
35.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1示出了本发明实施例中风机数据写入方法的流程图;
38.图2示出了本发明实施例中风机数据读取方法的流程图。
具体实施方式
39.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
40.本发明的实施例提出一种基于redis的风机数据读写方法,采用redis数据库和mysql数据库共同存储的方式。redis数据库是非关系型数据库,基于内存,读写速度快,但是存在内存空间不足的限制,mysql数据库是关系型数据库,是基于磁盘存储的,存储量大,但是读写速度相对于redis数据库较慢。根据风机数据特点,结合redis数据库和mysql数据库的优点,redis数据库负责高性能读取,mysql数据库负责存储大量数据,同时具有读写速
度快、存储量大的优点,可以高效实现风机数据实时更新。
41.在读写之前,首先需要基于linux风机监控系统建立redis数据库和mysql数据库,linux系统安全性能高于windows系统,因此基于linux风机监控系统建立的redis数据库和mysql数据库内数据安全性更好。
42.读写方法包括写入方法和读取方法,参照图1,写入方法是指将风机数据写入redis数据库和mysql数据库中,读取方法是指从redis数据库和mysql数据库中读取风机数据。写入方法具体包括:采集风机数据,例如采集上一年今天的发电量、上一个月今天的发电量、上一天的发电量、当前发生的错误、是否有报警等等,上一年今天的发电量、上一个月今天的发电量、上一天的发电量是每天晚上定时采集,当前发生的错误、是否有报警是定时器每隔几秒获取一次,例如可以是3秒获取一次数据,将当前发生错误的相相关信息和报警信息记录下来。
43.风机数据采集下来后,通过java语言利用modbus协议,存储风机数据至xml文件中,将xml文件保存好,存储xml文件至mysql数据库中;除了用java语言利用modbus协议,还可以用python、c、c++等计算机编程语言来利用modbus协议;modbus协议也可替换为udp协议,udp协议同样可以达到相同的效果;xml文件也可以替换为json文件,json文件内的数据同样可以保存在mysql数据库中。
44.获取mysql数据库中日志信息,具体是用udf(user define function,用户自定义函数)解析mysql数据库中数据日志信息binlog(二进制日志信息),binlog相比mysql数据库中的数据本身小得多,适应redis数据库内存小的特点,将binlog存入redis数据库中,保持redis数据库中的binlog与mysql数据库中数据同步。当需要操作数据时,由redis操作索引,根据索引读取mysql数据库中对应的完整数据。
45.参照图2,读取方法具体包括:首先进行用户权限验证,如果用户权限不符合,可以重新输入信息进行权限验证,但权限验证次数有限,如果经过多次权限验证都没有通过,则终止权限验证,此时用户无法输入信息。例如权限验证的上限次数为3次,当第三次权限验证没有通过,无法继续输入信息进行验证。
46.权限验证通过后,提取用户输入的信息,基于用户输入信息检索redis数据库中有无第一匹配数据,例如用户输入2018.11.18发电量,则从redis数据库中检索与2018.11.18发电量相关的binlog,找到的binlog即为第一匹配数据。如果找到了第一匹配数据,再基于第一匹配数据在mysql数据库中获取第二匹配数据,具体是利用modbus协议或udp协议,向mysql发送请求信息,所述请求信息内容为第一匹配数据。mysql数据库响应成功后会获取第二匹配数据,读取并解析显示第二匹配数据。如果在redis数据库中没有找到第一匹配数据,则基于用户输入信息直接在mysql数据库查找第二匹配数据,例如用户输入2018.11.18发电量,则从mysql数据库中检索与2018.11.18发电量相关的数据,找到的数据即为第二匹配数据,读取并解析显示第二匹配数据。如果在mysql数据库也没有找到第二匹配数据,则向用户显示没有找到数据。
47.如果基于用户输入信息判断redis数据库中无第一匹配数据,基于用户输入信息在mysql数据库查找到第二匹配数据,说明mysql数据库中的这个第二匹配数据没有同步到redis数据库中,因此读取这个第二匹配数据的日志信息,存储这个第二匹配数据的日志信息至redis数据库中,从而将这个第二匹配数据的日志信息同步到redis数据库中,后续用
户如果输入同样的信息,就不会直接从mysql数据库查找第二匹配数据。
48.获取到第二匹配数据后,还可以基于websocket技术发送第二匹配数据至客户端,实现客户端和服务器的实时通信,还可以使用轮询技术或comet(服务器推送)的方式发送第二匹配数据,但都不如websocket技术节省硬件资源,并且websocket技术是全双工通讯,实时性更强。
49.示例性的,设计redis存储的key及对应的意义,见表1,以及mysql数据库的表结构,见表2。
50.表1 redis存储的key及对应意义
[0051][0052][0053]
表2 mysql数据库表结构
[0054][0055]
通过上述技术方案,实现了风机的实时监控、故障预警、报表统计、发电量计算以及功率曲线计算等,为用户提供更加可视化的风机信息体验,及时通过故障预警对风机进行维护,减少不必要的损失。达到安全、高性能、实时性强的效果。
[0056]
本发明的实施例还提出了一种风机数据读写装置,包括:
[0057]
采集单元,用于采集风机数据;
[0058]
第一存储单元,用于存储风机数据至基于linux系统建立的mysql数据库中;
[0059]
日志获取单元,用于获取mysql数据库中日志信息;
[0060]
第二存储单元,用于存储日志信息至基于linux系统建立的redis数据库中;
[0061]
接收单元,用于接收用户输入信息;
[0062]
判断单元,用于基于用户输入信息判断redis数据库中有无第一匹配数据,
[0063]
第一获取单元,用于基于第一匹配数据在mysql数据库中获取第二匹配数据,
[0064]
第二获取单元,基于用户输入信息在mysql数据库查找第二匹配数据。
[0065]
本发明实施例还提出一种风机数据读写系统,读写系统包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机
程序时实现上述读写方法实施例中的步骤,例如图1或图2所示的步骤。或者,所述处理器执行所述计算机程序时实现上述各读写装置实施例中各单元的功能。
[0066]
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述读写系统中的执行过程。
[0067]
所述读写系统可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述读写系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,可以包括其他更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述读写系统还可以包括输入输出设备、网络接入设备、总线等。
[0068]
所称处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述读写系统的控制中心,利用各种接口和线路连接整个读写系统的各个部分。
[0069]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述读写系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0070]
所述读写系统集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0071]
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进
行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。