인증키 만료 구현하려고 뻘짓은 다한 것 같다. 이거 구현하려고 많은 방법을 찾아봤다.

 

 

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에 이런 게 생겨있다. 이거는 내가 좀 연구를 해보고 수정을 해야 할 것 같다.

https://www.npmjs.com/package/redis-expiry

+ Recent posts