728x90
SessionStore를 Mysql에서 Redis로 변경 하던 중 나타났던 오류와 해결 방법에 대해서 서술하려 한다.
이번에 redis 모듈이 업데이트 되면서 몇가지가 바뀌었는데 다른 블로그들에 이러한 내용을 찾기가 어려워서 직접 정리했다.
1.레거시 모드 사용하지 않기
//기존 코드 (오류남)
const redis = require("redis")
const redisdb = redis.createClient({legacymode: true})
기존에 redis-connect 모듈을 사용하려면 위처럼 legacymode를 true로 변경해줘야 했다.
그러나 업데이트 이후 지원하지 않으므로
//신규 코드 (오류 안 남)
const redis = require("redis")
const redisdb = redis.createClient()
코드를 이렇게 변경해주면 잘 작동한다.
2.RedisStore 사용법
이건 공식 npm redis-connect 홈페이지에도 나와있는 내용이다.
RedisStore = require("connect-redis")(session) //기존 코드 : 작동 안함
RedisStore = require("connect-redis").defaul //신규 코드 : 오류 안 나고 잘 작동함
기존에는 require("connect-redis")(session) 과 같은 방식으로 사용하라고 나와있었는데 업데이트 되면서 위에 처럼 코드를 짜면 된다.
const sessionStore = new RedisStore({client: redisdb})
app.use(session({
store: sessionStore,
secret: "시크릿",
resave: false,
saveUninitialized: false,
cookie: {secure: false}
}));
그다음에 이렇게 적절히 설정해주고 store에 넣어주면 된다.