티스토리 뷰
데이터베이스로 데이터를 조회하는 데, 성능을 꾀하기 위해 redis와 연동을 한다. 신규 기능에 적용하는 것은 어렵지 않을 것 같다. 하지만 기존 legacy 코드를 db에서 redis로 변경 한다면 새로운 전략이 필요할 것이다.
이런 경우가 얼마나 많겠냐마는 때때로 미션 크리티컬한 시스템 문제가 발생하면 한 번쯤 고려해 볼 만한 시나리오다.
db에서 redis로 변경한다면
- redis client 코드로 db 데이터를 조회하고 redis 데이터를 조회하여 결과 셋을 조합
- proxy 객체를 생성하여 db/redis 중 데이터 조회
- redis 명령 추가
위의 몇 가지 전략 중 성능이 가장 좋은 것은 3 > 2 > 1 이 될 것이고, 수정해야 할 legacy 코드의 양은 2 > 3> 1 순서가 될 것이라 짐작된다.
필자는 prototyping으로 redis 명령을 추가하는 방법을 구현해 보았다.
이름하여 ’MyRedis’라고 이름을 붙였고, 필자의 github 저장소에 commit 해 놓았다..
MyRedis
기존 Redis에서 ‘mysql’ 명령을 추가하였고, 이 명령은 mysql 데이터베이스에서 query 결과를 반환한다.
테스트로 'temp_table'
테이블을 생성하여 다음과 같은 데이터를 넣었다.
id | username | age |
---|---|---|
1 | Junil Um | 25 |
2 | Coupang | 3 |
3 | POWERUMC | 35 |
아래는 MyRedis로 ‘mysql’ 명령을 이용하여 데이터베이스에서 결과를 조회하는 redis-cli 결과 화면이다.
127.0.0.1:6379> mysql "select * from temp_table"
1) "1"
2) "Junil Um"
3) "25"
4) "2"
5) "Coupang"
6) "3"
7) "3"
8) "POWERUMC"
9) "35"
아직 구현 못한 부분이 있으나 더 구현한다면 이런 모습이 되지 않을까 한다.
127.0.0.1:6379> set mysql.host "localhost"
127.0.0.1:6379> set mysql.user "umc"
127.0.0.1:6379> set mysql.password "!@#$%"
127.0.0.1:6379> set mysql.db "db_name"
127.0.0.1:6379> mysql query dbresult 3600 "select * from temp_table;" # key expired query
127.0.0.1:6379> mysql lock
127.0.0.1:6379> mysql query "update temp_table set age=1 where ...생략..."
127.0.0.1:6379> mysql unlock
'C++' 카테고리의 다른 글
[MIPS] beq 를 안쓰고 bne 를 쓰는 이유는 무엇인가요? (0) | 2015.05.12 |
---|---|
[Swift] Xcode 6.3, Swift 1.2 업그레이드 시 언어 사양이 변경된 부분 정리 (0) | 2015.04.23 |
[OpenSSL] 디버깅을 통해 알아보는 Heartbleed 취약성 버그 (0) | 2014.04.17 |
[GDB] Hopper Disassembler 앱 (0) | 2014.02.12 |
[퀴즈] 프로그래머를 위한 문제 #4 - 또라이 같은 C 언어 코드를 설명하라 (0) | 2013.12.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
TAG
- .NET Framework 4.0
- Visual Studio 11
- 땡초
- umc
- 팀 파운데이션 서버
- Visual Studio
- 비주얼 스튜디오
- MEF
- test
- Windows 8
- Visual Studio 2010
- monodevelop
- TFS
- 비주얼 스튜디오 2010
- ALM
- Team Foundation Server 2010
- github
- c#
- ASP.NET
- Managed Extensibility Framework
- mono
- Silverlight
- .NET
- testing
- Visual Studio 2008
- LINQ
- TFS 2010
- Team Foundation Server
- 엄준일
- POWERUMC