SpringBoot集成Redis缓存技术在企业一卡通系统中的应用

2020-01-18 05:51宁方美贺雪梅牟晋娟
电子技术与软件工程 2019年24期
关键词:服务器端一卡通终端

文/宁方美 贺雪梅 牟晋娟

1 引言

时间管理、安全管理、消费管理在近些年的企业管理中越来越受到管理者的关注。在国外,由于人工成本高昂,时间管理更是企业生存发展的重要环节。企业一卡通就是帮助客户实现时间管理、运营安全等方面的统一管理,让时间管理变得更简单、安排的更合理、发挥出更大价值。企业一卡通系统是软件硬件相结合的系统,终端设备多样化,对于一个中大型的企业来说,每日产生的数据量是非常庞大的,企业一卡通开发的难点之一是保证终端和服务器端的数据的一致性,避免数据在上传下达过程中丢失。

本文结合实际企业一卡通项目开发经验,围绕SpringBoot技术架构中如何采用Redis缓存技术设置特定的操作流程,解决系统中数据同步问题。

2 SpringBoot技术架构和Redis技术简介

2.1 SpringBoot简介

SpringBoot是在 2013年推出的新项目,主要用来简化 Spring 开发框架的开发、配置、调试、部署工作,同时在项目内集成了大量易于使用且实用的基础框架。

在传统的Spring框架中开发,用户需要自行编写XML文件,并在Maven、Gradle中加入相应的依赖包,在响应的代码中添加功能代码,才能使用;如果使用SpringBoot开发,仅需在Maven、Gradle配置文件中加上少量的配置,即可在代码中使用所需的框架,让原本的配置简化到几乎是零代码、零 XML 配置,同时依赖包的版本问题也由SpringBoot轻松解决,所以SpringBoot非常适合大型项目的开发配置。

2.2 Redis技术

Redis是一个key-value存储系统,也是NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,Redis优势主要包括:

(1)性能极高,Redis是一种NoSql数据库,Redis的操作是在内存中进行的,其速度相比于MySQL之类的数据库,相当于内存读写与硬盘读写的差别,Redis能读的速度是110000次/s,写的速度是81000次/s ;

(2)支持的数据类型丰富,Redis支持二进制案例的 Strings,Lists,Hashes,Sets 及 Ordered Sets 数据类型操作;

(3)支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行;

(4)丰富的特性,Redis还支持 publish/subscribe,通知,key 过期等等特性。

基于上述优势,Redis技术最大的应用场景就是用来做缓存。缓存技术可以大大减轻服务器的压力,减少数据丢失,提高系统中数据的一致性和完整性。

3 Spring Boot集成Redis在一卡通管理系统应用

在企业一卡通系统中,员工每天通过终端进行考勤打卡、餐厅的消费记录等操作,这些终端产生的数据必须最终同步到服务器端,我们称之为“上传数据”。

另一方面,系统管理员在服务器端添加或者修改数据,如新员工到人事报道,人事工作人员通过服务器端的管理窗口录入新员工的信息;人事在服务器端调整员工所在部门等;这些在服务器端的修改必须同步到对应的终端设备中,我们称之为“下发数据”。

在企业一卡通系统中,做好终端设备和服务器之间的上传下发,也就做好了数据的同步。实际的应用中,主要存在两个主要的问题:

(1)大量数据上传容易产生服务器拥堵;

(2)数据丢失严重。

本系统采用Redis缓存技术结合SpringBoot框架设置了一套企业一卡通的同步机制。

3.1 HTTP PUSH 协议

图1:HTTP PUSH协议流程图

HTTP 协议是一种请求/响应型的协议,而Push 协议是基于HTTP的基础上定义的数据协议,Push协议建立在TCP/IP 连接上,使用 Push 协议的客户端和服务器,必须由客户端先发起“初始化信息交互”请求成功之后,才能使用其他功能,比如上传数据、获取服务器命令、上传更新信息、回复服务器命令等,其中这些功能并没有先后顺序,取决于客户端应用程序的开发。如图1所示。

3.2 上传数据

以“考勤打卡”为例说明“上传数据”实现机制。

(1)用户在终端打卡后考勤机自动发送RestApI POST请求到Server,客户端请求示例如下:

POST /iclock/cdata?SN=0316144680030&t able=ATTLOG&Stamp=9999 HTTP/1.1

Host: 58.250.50.81:8011

Content-Length: 145

1452 2015-07 -30 15:16:28 0 1 0 0 0

1452 2015-07 -30 15:16:29 0 1 0 0 0

8965 2015-07 -30 15:16:36 0 1 0 0 0

8965 2015-07 -30 15:16:37 0 1 0 0 0

(2)Server端接收到请求后,将此条考勤数据写入到Redis Queue中,同时给终端响应,Redis Queue中存储着所有终端上传的更新数据。

服务器响应: HTTP/1.1 200 OK Server: nginx/1.6.0

(3)在Redis Queue中可以设置不同的参数,选择实时写入或者定时写入数据库的方式,Redis Queue会按照先进先出的规则逐条取出更新数据写入的数据库。

3.3 下发数据

以“新增人员”说明“下发数据”的实现机制。

(1)人事通过管理页面录入新员工的基本信息,该条数据立即写入数据库中。

(2)按照设备协议规则组织添加数据命令,并把命令写入到Redis Cache中,新增人员的命令格式如下:

C:${CmdID}:DATA${SP}UPDATE${SP}USERINFO${SP}PIN=${XXX}${HT}Name=${XXX}${HT}Passwd =${XXX}${HT}Card=${XXX}${HT}Grp=${XXX}${HT}TZ=${XXX}${HT}Pri=${XXX}

部分字段说明:

1.PIN=${XXX}:用户工号

2.Name=${XXX}:用户姓名,当设备为中文时,使用的是 GB2312 编码,其他语言时,使用 U TF-8 编码

3.Passwd=${XXX}:密码

4.Card=${XXX}:卡号,值支持两种格式

(3)终端设备可以设置心跳包,规则间隔执行命令的时间,自动执行服务器端的Redis命令;一旦指令已经执行过且执行成功,该条指令将从Redis Cache中删除;执行失败的指令将被标注重新存储。

4 总结

在3.2 和3.3中分别讲述在作者参与的企业一卡通系统中,如何同步终端和服务器端的数据。Redis在“上传数据”和“下发数据”中分别采用了不同的技术手段,从终端上传的各种数据首先保存的Server端的Redis Queue中,按照先进先出的原则在从Redis Queue将数据写入数据库;服务端更新的数据写入数据库后,全部保存到Redis Cache中,根据设置的更新周期和频率逐步从Cache中获取更新指令,指令执行成功后实时更新Cache,从实际的系统运行效果来看,该机制大大降低了服务器拥堵问题,充分证明了Redis技术在解决此类问题中的强大功能。从实际应用效果看,终端和服务器端数据的一致性可以达到98%以上。

猜你喜欢
服务器端一卡通终端
Linux环境下基于Socket的数据传输软件设计
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
多功能北斗船载终端的开发应用
基于“一卡通”开发的员工信息识别系统
一卡通为新农合基金加密
ABB Elastimold 10kV电缆终端及中间接头
网页防篡改中分布式文件同步复制系统