
리눅스 서버에서 데몬을 이용하여 서비스 하고 있기 때문에, Redis 서버를 따로 설정해줘야한다.
standalone 방식이란?
서버가 부팅할 때 또는 명령을 내려 데몬을 작동시키며 데몬은 백그라운드에서 요청을 기다렸다가 요청이 들어오면 혼자서 처리하는 방식이다.
이러한 방식은 클라이언트의 요청이 언제 들어올 지 모르는 상황에서 항상 서비스가 가능하다는 점, 다른 메커니즘 없이 바로 네트워크 서비스 데몬이 클라이언트의 요청을 처리한다는 점 등의 장점이 있다.
1.클래스 및 필드 정의
public class CreateRedisStandalone {
private RedisClient client;
private GenericObjectPool<StatefulRedisConnection<String, String>> pool;
2.생성자
public CreateRedisStandalone(){
if (!Const.IS_TEST_MODE.equals("REAL"))
client = RedisClient.create("redis://localhost:6379");
else client = RedisClient.create("redis://10.xx.xx.xx:6379");
client.setDefaultTimeout(5, TimeUnit.SECONDS);
3.연결 풀 생성
pool = ConnectionPoolSupport.createGenericObjectPool(new Supplier<StatefulRedisConnection<String, String>>() {
public StatefulRedisConnection<String, String> get() {
return client.connect();
}
}, new GenericObjectPoolConfig<StatefulRedisConnection<String, String>>());
4.유휴 연결 관리
final AbandonedConfig abandonedConfig = new AbandonedConfig();
abandonedConfig.setRemoveAbandonedOnBorrow(true);
abandonedConfig.setRemoveAbandonedTimeout(10);
pool.setAbandonedConfig(abandonedConfig);
5.풀 반환 메서드
public GenericObjectPool<StatefulRedisConnection<String, String>> getLedisPool(){
return pool;
}
6.싱글톤 패턴 구현
private static CreateRedisStandalone instance = null;
public static CreateRedisStandalone getInstance() {
if (instance == null) {
synchronized (xxx.xxx.redis.CreateRedisStandalone.class) {
if (instance == null) {
instance = new CreateRedisStandalone();
}
}
}
return instance;
}