优化redis存储航班信息,改用map类型。避免不必要的网络传输。

This commit is contained in:
zhouxiunai
2018-12-12 10:15:19 +08:00
parent 310e3cdfd0
commit 6d6eb60cd9
@@ -1,9 +1,10 @@
package com.gzzn.omms.msgexchangeapi.service.flightInfo; package com.gzzn.omms.msgexchangeapi.service.flightInfo;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Collection;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -39,71 +40,40 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
.getSCHD() .getSCHD()
.getFLTR(); .getFLTR();
for(SCHD.FLTR fltr : lsFltr) Map<String, Object> mapFltr = new HashMap();
{ for(FLTR fltr : lsFltr)
Boolean result = redisSet(fltr); {
if(result == false) mapFltr.put(fltr.getFLID().toString(), fltr);
{ }
return false; return redisService.hmset(redisKey, mapFltr);
}
}//end for
return true;
} //end function } //end function
@Override @Override
public SCHD.FLTR getByFlid(String flid) { public SCHD.FLTR getByFlid(String flid) {
SCHD.FLTR fltr = (SCHD.FLTR) redisGet(flid); SCHD.FLTR fltr = (SCHD.FLTR) redisService.hget(redisKey, flid);
return fltr; return fltr;
} }
@Override @Override
public boolean saveFltr(SCHD.FLTR fltr) { public boolean saveFltr(SCHD.FLTR fltr) {
return redisSet(fltr); return redisService.hset(redisKey, fltr.getFLID().toString(),(Object)fltr);
} }
/**
* 重新包装的set
* @param fltr
* @return
*/
private boolean redisSet(SCHD.FLTR fltr)
{
return redisService.set(redisKey + fltr.getFLID(), fltr);
}
/**
* 重新包装的get
* @param flid
* @return
*/
private Object redisGet(String flid)
{
return redisService.get(redisKey + flid);
}
/**
* 情况所有动态航班信息
*/
private void removeAll()
{
Set<String> keys = redisService.keys(redisKey + "*");
redisService.del(keys);
}
@Override @Override
public List<SCHD.FLTR> findAll() { public List<SCHD.FLTR> findAll() {
Set<String> keys = redisService.keys(redisKey + "*");
List<SCHD.FLTR> lsResult = new ArrayList(); Map<Object,Object> mapResult = redisService.hmget(redisKey);
keys.forEach(key->{ if(mapResult == null)
SCHD.FLTR fltr = (SCHD.FLTR) redisService.get(key); {
lsResult.add(fltr); throw new RuntimeException("findAll fltr from redis fail");
}); }
Collection<Object> valueCollection = mapResult.values();
List<SCHD.FLTR> lsResult = new ArrayList(valueCollection);
return lsResult; return lsResult;
}//end method }//end method
@@ -111,7 +81,7 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
@Override @Override
public boolean deleteFltr(FLTR fltr) { public boolean deleteFltr(FLTR fltr) {
redisService.del(Arrays.asList(redisKey + fltr.getFLID())); redisService.hdel(redisKey, fltr.getFLID());
return true; return true;
} }
} }