Redis와 캐시 서버
Redis란
인메모리 데이터베이스로, 키-값 형태의 데이터 구조를 가지고 있다.
인메로리 데이터베이스이기 때문에 디스크 입출력 없이 속도가 빠르다.
휘발성을 지니고 있다.
키-값 형태의 데이터 구조를 갖고 있기 때문에 유연한 데이터 관리가 가능하다.
캐시 서버나 트래픽을 분산을 위해 사용된다.
Redis 구동
다음 명령어로 redis가 설치된 위치에서 redis 서버를 구동시킨다.
redis-server
다음 명령어로 redis 클라이언트에 접속이 가능하다.
redis-cli
클라이언트 명령어
get {key}
특정 키의 값을 조회한다.
key에 *를 입력할 경우 모든 데이터를 조회한다.
set {key} {value}
특정 키 값을 세팅한다.
del {key}
특정 키의 값을 삭제한다.
flushall
모든 데이터를 삭제 처리한다.
운영 이슈
데이터 크기가 큰 경우에 redis timeout 오류가 날 수 있다
이 경우, timeout을 늘려주는 것만이 방법은 아니다
api를 분리하여 데이터를 쪼개서 보내거나 ttl을 늘리는 방법도 있다
timeout 관련 설정
timeout -> 연결된 클라이언트의 idle time과 관련이 있다. 0으로 설정하면 연결을 끊지 않는다.
tcp-keepalive -> 클라이언트가 연결 끊은 상태에서 레디스 서버에서 연결을 잡고 있을 시간. 0으로 설정하면 연결을 끊지 않아 끊긴 연결이 계속해서 쌓일 수 있다.
Redis cli 설정값 확인
config get { timeout | tcp-keepalive | maxclients | tcp-connection)
netstat -antp | grep 6379 | wc -l를 통해서 접속한 수 확인 가능하다. -> maxclients와 비교해볼 수 있다.
스프링 캐시매니저
spring에서 cache를 사용할 경우 어노테이션 이외에도 cacheManager로 직접 관리가 가능하다.
의존성 주입 후에 cacheManager.getCache("캐시명")
Cache 객체에서 key로 get() 호출
ValueWrapper 객체에 값이 있으면 원하는 객체 형태로 형전환 후 사용 가능하다.
evict 또는 put도 가능하다.
댓글을 작성해보세요.