Enterprise Server Introduction


엔터프라이즈 서버 시작하기

레디스게이트 엔터프라이즈 서버는 Active-Active 이중화와 Subquery(서브쿼리), member expire 등 추가 기능을 제공합니다.
레디스 게이트에서 설계하고 개발했습니다.   Made in redisGate

엔터프라이즈 서버 설치

  • 압축 풀기
  • Make (Compile)
  • Install
    /usr/local/bin에 redis-eserver, redis-ecli 등 실행 파일이 복사된다. root로 설치해야 한다.
    실행 파일명은 redis-eserver, redis-ecli 입니다.

시작하기

  • 서버 시작하기
  • CLI 시작하기

디렉토리 설정

  • 레디스 엔터프라이즈에서는 설정 파일(redis.conf), 로그 파일, 데이터 파일(appendonly.aof, dump.rdb)의 디렉토리를 각각 지정할 수 있습니다.
  • dir(base directory) "/redis/" or "./"
  • log-dir "/redis/log/" or "./log/"
  • data-dir "/redis/data/" or "./data/"

로그 파일들

서버에 대한 다양한 정보를 제공해서 문제 발생시 원인을 찾는데 도움을 주고, 문제를 사전에 예방할 수 있도록 합니다.

  • redis.log: 레디스 로그 파일
  • stat.log: Memory, Keys, Clients 등 서버에 대한 정보를 주기적으로 기록합니다.
    Stat-log-interval-time으로 기록 주기를 설정할 수 있습니다. 디폴트는 10분(600초)입니다.
  • slowlog.log: Slowlog 정보를 주기적으로 기록합니다.
    Slowlog-interval-time으로 기록 주기를 설정할 수 있습니다. 디폴트는 10분(600초)입니다.
  • latency.log: Latency 정보를 주기적으로 기록합니다.
    Latency-log-interval-time으로 기록 주기를 설정할 수 있습니다. 디폴트는 10분(600초)입니다.

엔터프라이즈 서버 기능 설명

Active-Active 이중화

센티널 필요없이 레디스 서버 2대로 Actvie-Active 이중화를 구성할 수 있습니다.

  • 동기화 시작 명령: STARTSYNC ip port
    192.168.0.100 6000번 서버와 192.168.0.101 6001번 서버가 동기화를 하려면 아래와 같이 6000번, 6001번 서버에서 각각 startsync 명령을 실행합니다. 그러면 6000번 서버의 데이터는 6001번으로 전파되고, 6001번 서버의 데이터는 6001번으로 전파됩니다. 이후 입력/수정/삭제되는 데이터는 상대방 서버에 전파되어 동기화됩니다.
    6000번 서버는 6001번으로 부터 데이터를 받기 시작합니다. 6001번 서버는 6000번으로 부터 데이터를 받기 시작합니다.
  • 동기화 중지 명령: ENDSYNC ip port
    6000번 서버는 6001번으로 부터 데이터를 받는것을 중지합니다. 6001번 서버는 6000번으로 부터 데이터를 받는것을 중지합니다.
  • 동기화 정보는 info clone/clones 명령으로 확인할 수 있습니다.

멤버(member) 단위로 만료시간(expire) 설정

  • SET에서 만료시간 설정하기: EXPIRE
    expire myset AAA 10
    멤버를 여러개 지정할 수 있습니다.
    expire myset AAA BBB CCC 10
  • ZSET에서 만료시간 설정하기:
    expire myzset A1 10
    expire myzset A1 A2 A2 10
  • HASH에서 만료시간 설정하기:
    expire myhash field1 10
    expire myhash field1 field2 field3 10
  • 만료 시간 보기: TTL
    ttl myset AAA
    ttl myzset A1
    ttl myhash field1
  • 설정된 만료시간 지우기: PERSIST
    persist myset AAA
    persist myzset A1
    persist myhash field1
  • 대상 데이터 타입: SET, ZSET, HASH

조인(Join) 기능

  • ZSET(Sorted Set)과 다른 ZSET 키를 조인해서 한번의 쿼리로 여러 키의 값들을 조회할 수 있습니다. 그리고 HASH나 STRING 키들과도 조인됩니다. 성능(performance)이 향상됩니다.
    자세한 사용 예는 여기를 보세요.

서브쿼리 기능

  • 리스트의 일부 데이터를 다른 리스트에 복사할 경우:
    lpush mylist (lrange mylist2 0 9)
    lpush mylist (lrange mylist2 0 9 sort): 소트기능을 사용할 수 있습니다.
  • Set의 데이터를 리스트에 넣을 경우:
    lpush mylist (smembers myset)
    lpush mylist (sunion myset1 myset2): 합집합 결과를 리스트에 넣을 수 있습니다.
    lpush mylist (sunion myset1 myset2 desc): 내림차순으로 소트해서 리스트에 넣을 수 있습니다.
  • 데이터(값) 합치기:
    append key (mget key1 key2): key1, key2의 값을 합쳐서 key에 넣습니다.
    append key (lrange mylist 0 -1): 리스트의 모든 값을 합쳐서 key에 넣습니다.
    append key (hvals myhash): 해시의 값을 합쳐서 key에 넣습니다.
  • 리스트 데이터를 셋(Set) 또는 ZSet에 넣을 경우:
    sadd myset (lrange mylist 0 -1): 이 경우 중복된 데이터는 한번만 들어갑니다.
    zadd myzset (lrange mylist 0 -1): 이 경우 스코어는 0으로 들어갑니다. 따라서 값으로 소트된 결과를 얻을 수 있습니다.
  • 스트링 데이터를 해시에 필드, 값으로 넣을 경우:
    hset myhash (get key): 이 경우 key는 field로 저장됩니다.
  • 해시 데이터 복사:
    hset myhash (hgetall myhash2)
  • 키 삭제:
    del (get key)
    del (sdiff myset1 myset2): myset1에만 있는 멤버 키를 삭제합니다. del (keys * string): 스트링 키들을 삭제할 경우 사용합니다.
    del (keys user*): user로 시작하는 키들을 삭제할 경우 사용합니다.

기능 확장

  • keys * string: 스트링 키들만 조회합니다.
  • keys * string value: 스트링 키와 값을 같이 조회합니다.
  • keys * memory: 키와 키가 차지하고 있는 메모리 사이즈를 같이 조회합니다.
  • keys * sort: 키를 소트해서 조회합니다.
  • lrange mylist 0 -1 sort: 결과를 소트해서 보여줍니다.
  • smember myset sort: 결과를 소트해서 보여줍니다.
  • cluster getkeysinslot <slot> <count> memory sum: 키와 키가 차지하고 있는 메모리 사이즈를 보여주고 마지막에 합계를 보여줍니다.

Email 답글이 올라오면 이메일로 알려드리겠습니다.