일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- angular 6
- 객체설계
- tvheadend
- maven #junit
- ASUS 공유기
- EXK
- docker 네트워크
- Tomcat error-page version
- Value Object(VO)
- 자바개발
- SW분석
- USB-C충전
- LAN WAN
- 프로젝트관리
- 자바튜닝
- open cursors
- sonoff
- 구글캘린더 검색
- Data Transfer Object(DTO)
- 실해하지 않는
- SI와 SM 차이점
- LG그램2017
- CBD 단점
- 소프트웨어설계
- SW설계
- USB-C to HDMI 아답터
- 경력개발자
- SpringBoot
- 네트워크 기본개념
- 자바스크립트 JQuery
- Today
- Total
대빵's Blog
Redis 수정에 관계없이 정해진 시점에 데이터 삭제시키기. 본문
Redis 수정에 관계없이 정해진 시간에 expire 처리하기(cron 처럼)
이번에 Redis를 사용하면서 느낀건 참 쉽게 사용가능한데 호불호가 극명하게 나뉘고 목적이 명확하게 사용되어야 한다는 점이다.
Redis 는 저장된 데이터에 expired time 을 설정하여 해당 데이터가 일정시간 지나면 없어지게 해준다.
데이터가 생기면 모를까....없어지는데 왜 좋은건지 이해가 되지 않는다면 아직 개발을 좀 더 해봐야 된다.
개발시 가장 까다로운 요구사항 중 하나가 생성된 데이터를 특정시간 지나면 없애고 갱신해 달라는 요구사항이다.
데몬을 띄워서 해당 데이터를 모니터링 하는 경우가 많아서 여러가지로 귀찮아 진다.
Redis 를 사용하면 데이터가 생성된 이후 일정시간 지나면 데이터를 없애 버리기 때문에
데이터 생성 -> 데이터 저장 -> 데이터 모니터링 -> 데이터 삭제 -> 데이터 재생성
이러한 싸이클을
데이터 생성 -> 데이터 저장 -> 데이터 조회 없으면 재생성
이렇게 단순화 시킬 수 있다.
문제는 이 데이터를 내가 원하는 시간에 expired 시키기가 까다롭다는 것이다. 특히, 중간에 수정되더라도 상관없이 내가 원하는 시간에 데이터를 없애려면 약간의 기교가 필요하다.
다른 방법도 있겠지만 내가 사용한 방법은 데이터 저장시 별도의 key 값으로 expire되기 원하는 시간을 저장하는 것이다.
즉, 데이터 요청하면 해당 키값을 확인해서 키값의 데이터가 없거나 키값의 데이터가 현재시점 보다 과거라면
Redis 데이터를 지우고 갱신하면 된다.
사실 굉장히 간단한 내용이지만 이걸 생각해 내고 다른 방법이 없는지 구글질 하는 시간이 3일이나 걸렸다는....ㅡㅡ;
'개발관련' 카테고리의 다른 글
소프트웨어의 설계의 기본은 MECE 이다. (0) | 2018.04.14 |
---|---|
높은 신뢰성 소프트웨어의 첫단추는 개발자의 신뢰성 이다. (0) | 2018.03.16 |
소프트웨어 컴포넌트 설계의 단점 (0) | 2018.03.01 |
소프트웨어 개발에서의 Agile (0) | 2018.03.01 |
Async 멀티쓰레드 환경에서의 jMeter 사용팁(RPS vs TPS) (0) | 2018.02.10 |