처음에 Bearer Token jwt로 구현하였고, accessToken을 json으로 주고 받으면서 회원기능을 구현하고 있었습니다. 그러나, accessToken의 만료시간이 지나면 로그인이 자동으로 풀린다는 사용자 편의를 감소시키는 부분이 있었고 이를 개선하고자 회원 기능을 AccessToken, RefreshToken을 이용하여 구현하기로 마음을 먹었습니다. 요구사항은 다음과 같습니다. 회원이 로그인을 했을 시에 accessToken과 refreshToken을 발급합니다. 만료일은 accessToken은 1시간, refreshToken은 2주로 만료기한을 잡아놓습니다. accessToken이 만료되지 않았다면, 회원은 인증/인가 기능을 가질 수 있습니다. accessToken이 만료되었다면, ref..
DB관련/REDIS
이전에 Redis에 대해 공부한 이유는 당연하겠지만, 프로젝트에 적용해보고 싶었기 때문입니다. 어떻게 적용했는지 작성해보고자 합니다. 저도 다른 분들의 코드를 참고하였습니다.(아래 링크 달아 놓겠습니다.) 게시글 조회수 구현 백엔드 개발자로서 제일 중요한 점을 꼽으면, "서버에 부하가 가지 않도록 여러 방법으로 분산시키는 법" 입니다. 조회수 구현을 Redis를 활용하게 된 것도, 그 이유에 부합했기 때문입니다. 게시글의 조회수를 구현하기 위해, 매번 게시글을 들어갈 때마다 조회수를 증가시키는 INSERT 쿼리가 발생했습니다. 요구사항은 이렇습니다. Redis에 [게시글번호(pk):조회수] 이렇게 저장한 후, DB에는 반영하지 않고 Redis에 조회수를 적재시킵니다. 3분 마다 캐시 데이터를 DB에 반영..
REDIS - 숫자 다루기 (DECR, DECRBY, INCRBY, INCR) 대략적인 숫자 저장 방법 GET, SET 중요한 점은 문자열 "20"으로 반환된다는 것. INCR / DECR SET age 20 -> key가 "age"인 value "20"을 저장한다. INCR age -> "age"라는 key를 가진 value값에 1을 증가시킨다. DECR age -> 반대로 value 값에 1을 빼준다. INCRBY / DECRBY INCRBYFLOAT https://redis.io/docs/about/ Introduction to Redis Learn about the Redis open source project redis.io
REDIS - DEL, GETRANGE, SETRANGE DEL 키를 삭제합니다. 문자열뿐만 아니라 모든 데이터 유형에서 작동합니다. GET color -> 이전에 제가 저장해놨던 key 'color' 의 value 값인 'green'을 반환합니다. DEL color -> 'color'라는 이름을 가진 key를 찾아 key, value 다 삭제합니다. 성공하면 1을 반환합니다. GET color -> 삭제했기 때문에 'color'라는 key를 찾을 수 없습니다. null을 반환합니다. GETRANGE 문자열의 특정 범위를 가져와서 반환한다. SETRANGE 문자열의 특정 인덱스를 기입하고, 그 값이 2라면 2번 인덱스부터 변경하고자 하는 문자열을 입력하면 {"model" : "asdfasdf"} -> S..
REDIS - MGET MGET M -> Multiple이라고 생각하면 된다. 즉, MSET이 여러 개의 key value 데이터를 저장할 수 있는 것처럼 MGET은 여러 개의 key value 값을 가져올 수 있다.
REDIS - SETNX / SETEX / MEST / MSETNX SETEX SET + EX 옵션을 사용하는 것과 동일 EX는 이전에 이야기 했듯이, 종료 시간을 설정하는 것 왼쪽과 오른쪽의 명령어는 동일하다고 보면 된다. 공식 문서를 보면 SET으로 SETEX 작업을 모두 처리할 수 있고, SETEX는 앞으로 지원하지 않겠다고 설명하고 있다. https://redis.io/commands/setex/ SETEX Sets the string value and expiration time of a key. Creates the key if it doesn't exist. redis.io SETEX color 2 red -> key는 'color' value는 'red' 2초간 저장하겠다. 아래 명령어를 ..