[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..
[Java] 예외 번역과 예외 연쇄 기법
·
JVM/Java
문제 상황수행하려는 일과 관련 없는 예외가 튀어나오면 당황스럽다.고수준 메소드가 저수준의 예외 처리하지 않고 바깥으로 전파해버릴 때 발생하는 문제다. 해결 방법상위 계층 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔야한다. try { // 저수준 예외 발생 } catch (LowerLevelException e) { // 추상화 수준에 맞게 번역 throw new HigherLevelException(...) }왜, 언제 사용하는가?저 수준의 예외가 디버깅에 도움이 될 때다.  예외 번역 (Exception Translation)class AbstractSquentialList { /* * @throws IndexOutOfBoundsException {@inheritDoc} ..