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