인증키 만료 구현하려고 뻘짓은 다한 것 같다. 이거 구현하려고 많은 방법을 찾아봤다.
redis 내에서 분명 해결할 수 있을거라 생각했지만 쉽사리 찾지 못해서 우선 setTimeout으로 했었다. 그리고 몇 시간 뒤 바로 찾아서 해결했다.
1. setTimeout
setTimeout은 redis에 set 한 후 10초 뒤에 실행되게 설정해놨다. 이런 경우 비동기 처리기 때문에 인증키를 요청한 유저에게는 인증키가 전송될 거라 생각했다. 한 가지 걱정은 해당 요청이 setTimeout 때문에 10초 뒤에 종료가 된다는 점이었다. setTimeout 첫 번째 파라미터에 N초 후에 실행할 내용이다. 물론 해당 함수에 이름만 넣어야 한다. 두 번째 파라미터에는 N초 X 10에 해당하는 시간을 쓰면 된다. 세 번째부터는 첫 번째 함수에서 실행될 파라미터를 써주면 된다. 아래처럼 redis.delete 함수에 파라미터가 1개면 3번째만 써주면 된다.
setTimeout(redis.delete, timeOut, key);
2. Redis SET
client.set(key, value)
Redis에서 SET을 사용할 때 보통 위에처럼 만 썼다. 대부분에 블로그를 찾아보니 그랬다.
Redis 홈페이지를 보니 SET 할 때 끝에 숫자를 쓰는 걸 봤다. 그래서 npm에 찾아보니 딱히 다른 설명은 없었다.
그래서 코드 작성할 때 파라미터 참조를 좀 쳐다봤다.
자세히 보니 3,4번째 파라미터가 눈에 띄었다. 그중에서 duration...
더 찾아보니 저 모드는 아래처럼 옵션이었다.
그러니깐 아래처럼 작성하니 정말 됐다.
client.set(key, value,'EX', 10 ,async () => {
console.log(key + 'redis 저장 완료')
})
3. client.expire(key, ) https://redis.io/commands/set
몇몇 블로그를 보니 가끔가다가 req.cache.expire 아니면 session을 expire 하는 사람들을 봤다. 그래서 혹시나 해서 expire를 쳐보니 있긴 있었다.
client.expire(key, 10)
4. redis-expiry
얼마 전까지 개고생 하다가 시간 좀 생겨서 다시 검색해보니 npm에 이런 게 생겨있다. 이거는 내가 좀 연구를 해보고 수정을 해야 할 것 같다.
'IT > Node.js' 카테고리의 다른 글
[Node.js] CoAP Server Listener (0) | 2021.05.20 |
---|---|
[Node.js] CoAP Client (0) | 2021.05.18 |
[Node.js] Redis Error: node_redis: The GET command contains a invalid argument type. (0) | 2021.05.13 |
[Node.js] Redis err (0) | 2021.04.23 |
[Node.js] 랜덤 문자열을 이용하여 임시 비밀번호/세션키/인증번호 생성 응용하기 (0) | 2021.01.15 |