From 0cc33b89c5d5f0ca0cd5fb85efcd8a4c59c9ecc5 Mon Sep 17 00:00:00 2001
From: zhouxiunai <154707516@qq.com>
Date: Tue, 4 Dec 2018 09:57:02 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B7=BB=E5=8A=A0redis?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 5 +
.../msgexchangeapi/config/RedisConfig.java | 40 ++
.../msghandler/MsgHandlerDispatcher.java | 4 +-
.../redis/RedisKeyConstant.java | 11 +
.../msgexchangeapi/redis/RedisService.java | 501 ++++++++++++++++++
.../msgexchangeapi/redis/dao/ContextDao.java | 9 -
.../redis/dao/FlightInfoDao.java | 9 -
.../msgexchangeapi/redis/entity/Context.java | 34 --
.../redis/entity/FlightInfo.java | 34 --
.../omms/msgexchangeapi/runner/AppRunner.java | 28 +-
.../service/FlightInfoServiceImpl.java | 30 +-
.../service/IFlightInfoService.java | 4 +-
.../msgexchangeapi/task/ExchangeTask.java | 31 +-
src/main/resources/application-dev.yml | 11 +
14 files changed, 607 insertions(+), 144 deletions(-)
create mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java
create mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java
create mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java
delete mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/ContextDao.java
delete mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/redis/dao/FlightInfoDao.java
delete mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/Context.java
delete mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/redis/entity/FlightInfo.java
diff --git a/pom.xml b/pom.xml
index b0377a24..c7379ba9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,6 +88,11 @@
jackson-databind
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java b/src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java
new file mode 100644
index 00000000..ae1cdd43
--- /dev/null
+++ b/src/main/java/com/gzzn/omms/msgexchangeapi/config/RedisConfig.java
@@ -0,0 +1,40 @@
+package com.gzzn.omms.msgexchangeapi.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@Configuration
+public class RedisConfig {
+
+ @Bean
+ @SuppressWarnings("all")
+ public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
+ RedisTemplate template = new RedisTemplate();
+ template.setConnectionFactory(factory);
+ Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+ ObjectMapper om = new ObjectMapper();
+ om.setVisibility(PropertyAccessor.ALL, Visibility.ANY);
+ om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+ jackson2JsonRedisSerializer.setObjectMapper(om);
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ // key采用String的序列化方式
+ template.setKeySerializer(stringRedisSerializer);
+ // hash的key也采用String的序列化方式
+ template.setHashKeySerializer(stringRedisSerializer);
+ // value序列化方式采用jackson
+ template.setValueSerializer(jackson2JsonRedisSerializer);
+ // hash的value序列化方式采用jackson
+ template.setHashValueSerializer(jackson2JsonRedisSerializer);
+ template.afterPropertiesSet();
+ return template;
+ }//end function
+
+}
diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java
index 204af053..e24e4099 100644
--- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java
+++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java
@@ -7,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
-import com.gzzn.omms.msgexchangeapi.redis.entity.FlightInfo;
+import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
@Service
@@ -15,7 +15,7 @@ public class MsgHandlerDispatcher {
@Autowired
IExchangeService exchangeService;
- public List dispatch(String xmlMsg)
+ public List dispatch(String xmlMsg)
{
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java
new file mode 100644
index 00000000..b61968c0
--- /dev/null
+++ b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisKeyConstant.java
@@ -0,0 +1,11 @@
+package com.gzzn.omms.msgexchangeapi.redis;
+
+/**
+ * 应用上下文
+ * @author Administrator
+ *
+ */
+public class RedisKeyConstant {
+ public static String KEY_ISWAITSCHD="isWaitSchd";
+ public static String KEY_MSGPROGRESS="msgProgress";
+}
diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java
new file mode 100644
index 00000000..7893d0aa
--- /dev/null
+++ b/src/main/java/com/gzzn/omms/msgexchangeapi/redis/RedisService.java
@@ -0,0 +1,501 @@
+package com.gzzn.omms.msgexchangeapi.redis;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+
+/**
+ * Redis工具类
+ * @author Administrator
+ *
+ */
+@Service
+public final class RedisService {
+ @Autowired
+ private RedisTemplate redisTemplate;
+ // =============================common============================
+ /**
+ * 指定缓存失效时间
+ * @param key 键
+ * @param time 时间(秒)
+ * @return
+ */
+ public boolean expire(String key, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.expire(key, time, TimeUnit.SECONDS);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ /**
+ * 根据key 获取过期时间
+ * @param key 键 不能为null
+ * @return 时间(秒) 返回0代表为永久有效
+ */
+ public long getExpire(String key) {
+ return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+ }
+ /**
+ * 判断key是否存在
+ * @param key 键
+ * @return true 存在 false不存在
+ */
+ public boolean hasKey(String key) {
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ /**
+ * 删除缓存
+ * @param key 可以传一个值 或多个
+ */
+ @SuppressWarnings("unchecked")
+ public void del(String... key) {
+ if (key != null && key.length > 0) {
+ if (key.length == 1) {
+ redisTemplate.delete(key[0]);
+ } else {
+ redisTemplate.delete(CollectionUtils.arrayToList(key));
+ }
+ }
+ }
+ // ============================String=============================
+ /**
+ * 普通缓存获取
+ * @param key 键
+ * @return 值
+ */
+ public Object get(String key) {
+ return key == null ? null : redisTemplate.opsForValue().get(key);
+ }
+ /**
+ * 普通缓存放入
+ * @param key 键
+ * @param value 值
+ * @return true成功 false失败
+ */
+ public boolean set(String key, Object value) {
+ try {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ /**
+ * 普通缓存放入并设置时间
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
+ * @return true成功 false 失败
+ */
+ public boolean set(String key, Object value, long time) {
+ try {
+ if (time > 0) {
+ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+ } else {
+ set(key, value);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ /**
+ * 递增
+ * @param key 键
+ * @param delta 要增加几(大于0)
+ * @return
+ */
+ public long incr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("递增因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+ /**
+ * 递减
+ * @param key 键
+ * @param delta 要减少几(小于0)
+ * @return
+ */
+ public long decr(String key, long delta) {
+ if (delta < 0) {
+ throw new RuntimeException("递减因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, -delta);
+ }
+ // ================================Map=================================
+ /**
+ * HashGet
+ * @param key 键 不能为null
+ * @param item 项 不能为null
+ * @return 值
+ */
+ public Object hget(String key, String item) {
+ return redisTemplate.opsForHash().get(key, item);
+ }
+ /**
+ * 获取hashKey对应的所有键值
+ * @param key 键
+ * @return 对应的多个键值
+ */
+ public Map