2013년 5월 2일 목요일
redis 를 hibernate 2nd cache 로 사용하기 - part 2
hibernate-redis 제작 - part 1
hibernate-redis 제작 - part 2
redis 가 캐시 시스템으로 사용하기 좋다는 것은 여러 사례에서 알 수 있고, SNS 같은 경우에는 Timeline 정보를 캐싱하는데 자주 사용하지요.
이런 redis 를 hibernate 의 2nd cache 저장소로 사용하면 좋겠다고 생각해서, hibernate-redis 를 제작했습니다.
첫번째 버전은 제가 Redis에 대해 잘 몰라, 그냥 Spring Data Redis 를 사용하여, 구현했습니다.
개발하다보니 Jedis 만을 사용하여 개발하는 것이 더 가볍게 개발 할 수 있을 것 같아, Spring Data Redis 를 걷어내고, Jedis 만을 사용하여 개발했습니다.
hibernate-redis 는 현재 0.9.0 이고, 단위 테스트를 통과한 상태입니다.
아직 실전 테스트가 남아 있습니다^^
이번 글에서는 일반적인 캐시로서 Redis를 이용할 때, 직접 jedis 를 사용할 수도 있지만, 좀 더 쉽게 만든 JedisClient 에 대해 소개하기로 하겠습니다.
JedisClient.java
JedisClient 를 굳이 따로 만든 이유는 JedisPool 사용과 Transactional 작업이 반복적인 코드라 Jedis 만 사용하게되면 코드가 많아질까봐 Spring Data Redis 와 유사하게 만들었습니다.
물론 Jedis 의 모든 메소드를 지원하지는 않습니다. 캐시로 사용할 때 필요한 기능만을 구현했습니다.
이를 바탕으로 일반 저장소로 사용 가능하도록 확장할 수 있을겁니다.
특히 ShardedJedis 를 사용하려면, 다른 방법을 사용해야 합니다. 이 방식은 대용량 캐시나 저장소로 사용할 때 고려해 봐야 겠습니다.
참고로 JedisPool 설정 정보도 도움이 될겁니다.
피드 구독하기:
댓글 (Atom)
댓글 2개:
이 프로젝트를 fork 해서 하이버네이트3 용으로 만들려고 하는데 단위테스트쪽이 4와 많이 달라서 좀 헤매고 있습니다.
hibernate 3 용이라면, hibernate-orm 3 에서 ehcache 용 코드 및 단위테스트를 참과하세요.
JedisClient 는 재사용 가능하고, 나머지는 hibernate 3용으로 porting 이 가능합니다.
hibernate 3 이하는 CacheProvider 가 단순해서 구현하기 쉬울 겁니다.
댓글 쓰기