Redis와 캐시서버
캐시(cache)
자주 사용하는 데이터나 값을 복사해두어 사용 비용을 절감
자주 변경하지 않는 데이터 또는 자주 조회하는 데이터를 캐시에 두고 사용한다
이미지나 이벤트 정보
일시적으로 필요한 데이터, DB에서 관리할 필요가 없지만 서비스에서 사용하는 데이터
중복 요청이나 재고관리
캐시는 만료시간을 두어 갱신하거나 데이터 갱신 시 캐시 또한 갱신되도록 한다
Redis
NoSQL(key-value) 기반의 비관계형 데이터베이스
인메모리 - 메모리에서 데이터를 처리함으로 속도가 빠르다
캐시 서버로 주로 사용
데이터 구조
string, hash, list, set, sorted set 등
spring data redis
spring boot starter data redis 모듈 의존
redis server(로컬 또는 embeded redis server)
spring data redis 데이터 처리
데이터 저장
@Cacheable(name = "item")
name + 파라미터를 키로 하여 return 값을 저장
RedisTemplate
redisTemplate.opsForValue().set(키, 값)
RedisRepository
CRUD Repository 상속
redisRepository.save(엔티티)
Redis 엔티티 - @RedisHash의 값 + @Id 필드 값을 키로 사용
데이터 조회
RedisTemplate
redisTemplate.opsForValue().get(키)
RedisRepository
redisRepository.findById(키)
데이터 삭제
@CacheEvict(name = "item")
RedisTemplate
redisTemplate.opsForValue().delete(키)
RedisRepository
remove
Redis connection reset by peer 에러 - 커넥션이 많이 쌓여서 발생하는 에러
tcp_keepalive
클라이언트가 응답 없을 시 커넥션을 제거한다
해당 설정을 통해 끊어진 연결을 제거하여 커넥션이 쌓이는 것을 방지한다
timeout
연결된 클라이언트의 idle 대기시간 설정
해당 시간동안 송수신이 발생하지 않으면 연결을 끊는다.
0으로 설정하면 사용하지 않고 계속해서 연결을 유지한다.
클라이언트가 작업을 하지 않아도 연결을 끊지 않도록 timeout을 0으로 설정하고,
tcp-keepalive 시간마다 클라이언트를 확인해서 응답이 없으면 커넥션을 끊는다정리
timeout : 연결 유지 기간 설정
tcp keepalive : 클라이언트 응답 없는지 주기적으로 확인하여 연결 끊음
Redis-cli
get/set
flushall
댓글을 작성해보세요.