반응형
Redis란?
레디스(Redis)는 고성능 key-value 저장소로서 리스트, 해시, 셋 정렬된 셋 등 여러 형식의 자료구조를 지원하는 NoSQL입니다.
redis는 map 형태로 데이터를 저장하기 때문에 spring redis cache를 적용할 DTO에 serialize를 구현해 직렬화시켜 데이터를 저장할 수 있도록 했습니다.
시스템아키텍쳐구성도
저는 캐시를 적용할 Rest는 수정이 빈번하지않고 조회가 주를 이루는 곳에 적용을 해야 한다고 생각했습니다.
관리자 화면과 사용자화면을 구성하고 있는 React에서 Rest Server에 투표 정보를 계속 부르기 때문에 후보자나 득표정보 등 비교적 자주바뀌는 정보에 비해서 캐시를 적용하기 알맞은 데이터라고 생각해 투표 정보에 캐시를 적용했습니다.
캐시적용 전,후 비교
TPS
응답시간
TPS와 응답시간 모두 적용 전과 비교해 약 6배가량 효율이 좋아진 것을 확인할 수 있었습니다.
적용소스
@Transactional
@Service(value="VoteServiceImpl")
public class VoteServiceImpl implements IVoteService {
@Autowired
IVoteDao man;
public VoteServiceImpl() {}
@Override
@Cacheable(value = "getVoteAllList")
public List<VoteVO> getVoteAllList() {
return man.getVoteAllList();
}
@Override
public List<VoteVO> getVoteActiveList() {
return man.getVoteActiveList();
}
@Override
@CacheEvict(value="getVoteAllList")
public boolean insertVote(String name, String middlepart, String start, String end) {
return man.insertVote(name, middlepart, start, end);
}
@Override
@CacheEvict(value="getVoteAllList")
public boolean delVote(int code) {
return man.delVote(code);
}
@Override
public boolean updateVote(int code, String name, String middlepart, String start, String end) {
return man.updateVote(code, name, middlepart, start, end);
}
@Override
public List<VoteVO> getVoteList(String votercode) {
return man.getVoteList(votercode);
}
}
Jmeter 테스트 중 통신오류가 발생할 경우
jmeter를 사용해 쓰레드 테스트를 하는 중 47초 이상 진행 시 모든 http request가 실패하는 상황을 맡이했습니다.
http request 응답 에러
org.openqa.selenium.webdriverexception java.net.bindexception address already in use connect
대응법
win+r로 실행파일을 켠 뒤 regedit을 입력해 레지스트리편집기를 실행합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort 값을 10진수로 65534으로 변경해줍니다.
반응형
'spring' 카테고리의 다른 글
redis cachemanager 설정 참고 (0) | 2020.05.21 |
---|---|
spring redis cache (0) | 2020.03.04 |