[Redis] TTL - 어떤 방식으로 만료된 키를 제거할까?
·
DataBase/Redis
개요레디스는 키에 Time To Live (TTL) 이 지정된 경우 키가 만료(expired) 되면 해당 키를 제거한다.어떤 방식으로 만료된 키를 제거하는 것일까? 레디스는 2가지 방법을 제공한다.바로 Passive 방식과 Active 방식이다. Passive way클라이언트가 만료된 키에 접근하면, 그때야 비로소 해당 키를 제거한다.장점CPU 오베헤드가 발생하지 않는다.단점만료된 키에 클라이언트가 접근하지 않는다면?=> 만료된 키가 제거되지 않는다.=> 메모리 낭비 발생 Active way아래 과정을 1초에 대략 10회 진행한다.TTL 값이 있는 키 20개를 랜덤하게 뽑는다.뽑은 키 중 만료된 키만 제거한다.(2.)에서 25% 이상 키가 제거되었다면 (1.)로 돌아간다.(2.)에서 25% 미만 키가 제..
[Redis] TTL - 언제 업데이트 될까?
·
DataBase/Redis
개요Redis TTL 은 EXPIRE 명령어로 쉽게 설정할 수 있다.한 번 설정한 TTL이 '갱신'되거나 '유지'되는 케이스를 미리 알고 사용해야한다.이 글은 Redis Command 별 TTL이 언제 갱신 또는 유지되는지를 소개한다.  키에 매핑된 값 전체를 완전히 대치하는 연산만이 TTL을 갱신한다. ex)DEL값을 아예 '삭제' 해버린다.SET값을 새 값으로 아예 '대치' 해버린다.     키에 매핑된 기존 값에 연산을 하거나값을 추가하는 연산은 TTL을 유지한다. ex)INCR / DECR기존 값에 +-1LPUSH / LPOP기존 List에 원소 추가/제거SADD/SREM기존 Set에 원소 추가/제거HSET기존 property 를 변경RENAMEkey 이름을 변경 member2team 이라는 SE..
[Redis] DataStructure Lifecycle
·
DataBase/Redis
Collection type다음과 같이 여러 value 를 담을 수 있는 Data Typehashlistsetsortedset값 추가시 자동 생성된다.LPUSH, SADD 등과 같은 명령어 입력시 자동으로 key 가 생성된다.> EXISTS myset(integer) 0> SADD myset "A" "B"(integer) 2> EXISTS myset(integer) 1> SREM myset "A" "B"(integer) 2> EXISTS myset(integer) 0갖는 값이 0개가 되는 시점에 제거된다.LPOP, SREM 과 같은 명령어로 모든 원소를 제거하면해당 키는 알아서 제거된다.> SMEMBERS myset1) "A"2) "B"> SREM myset "A" "B"(integer) 2> EXIST..
[Spring] DataJpa - Query methods, @Query
·
JVM/Spring
Entity class 를 정의하고 CRUD Repository 구현 노가다를 하지 않게해준다.JpaRepository 는 대부분의 공통 메소드를 지원하기 때문이다. JpaRepository 지원 메소드Class Diagram을 보면 JpaRepository 가 얼마나 많은 메소드를 지원하는지 알 수 있다.(List)CrudRepository , PagingAndSortingRepository , QueryByExmampleExecutor 등 여러 인터페이스를 상속받는다. Spring Data Jpa 3.4.0 기준 JpaRepository 가 제공하지 않는 메소드는?다음처럼 username 을 가지고 Member 를 조회하는 기능이 필요하다고 하자.인터페이스에 새로운 메소드를 정의했다.public in..
Yaml 파일 쓰기 - 고급
·
기타/잡동사니
Overview  Literal StyleMultiline 을 지원하기 위한 모드자동으로 줄 끝에 `\n` 개행 문자가 삽입된다.마지막 라인에는 `\n` 개행 문자가 삽입되지 않는다.   Folded StyleMultiline 지원,개행문자가 아닌 띄어쓰기 (whitespace) 가 삽입된다.마지막 라인에는 띄어쓰기가 삽입되지 않는다.    마지막은 왜 포함을 안시키나요? : ChompingYAML 은 3가지 Chomping mode 를 지원한다.(1) Strip`-` ,  마지막 라인을 포함한 빈 라인들은 값에서 제외한다.(2) Clip (default)마지막 라인의 개행 처리, 띄어쓰기 등 값을 유지한다.마지막 라인 이후 빈 라인들은 값에서 제외한다.  (3) Keep마지막 라인 이후의 빈라인까지 모..
[Docker] manifest digest vs index digest
·
기타/Docker
Digest 는 무엇인가?Docker image 는 S3 파일처럼 MD5 해시값을 적용한 digest 를 갖는다.Digest 의 사전적 정의는 단방향 해시 함수에 적용하여 일정한 길이로 생성된 결과 값이다.  Digest 는 왜 쓰는가?메시지 무결성 보장-> 메시지가 변경되었는지 여부를 확인하기 위한 용도로 쓰인다. Digest 활용 예시git commit각각의 commit 은 서로 다른 digest 값을 갖는다.S3 eTagS3 파일 (Object) 또한 MD5 해싱을 통해 생성된 digest 값을 `eTag` 속성으로 갖는다.Docker image digest Docker image 파일도 SHA-256 으로 digest 값을 갖는다.  index digest vs manifest digestDock..