Redis不删除会话密钥

时间:2016-07-31 16:19:01

标签: session express cookies redis

我正在使用Redis存储我的ExpressJS应用程序的会话数据,并且在过去遇到了一些问题,其中持久性cookie使我的用户登录导致开发问题。我尝试使用redis-cli清除会话数据,但是尽管运行DEL KEYS *并获得(integer) 0响应,我仍然会在运行KEYS *时看到会话。任何人都可以帮我删除这些数据吗?

示例:

127.0.0.1:6379> KEYS *
1) "sess:O7pchKqe-n7NUhP3lBANaf7LMjJG0U0a"
2) "sess:tSyQCCISPBpH88zT3MJjHw2tidttMdRs"
127.0.0.1:6379> DEL KEYS *
(integer) 0
127.0.0.1:6379> KEYS *
1) "sess:O7pchKqe-n7NUhP3lBANaf7LMjJG0U0a"
2) "sess:tSyQCCISPBpH88zT3MJjHw2tidttMdRs"

存储会话数据的ExpressJS代码:

var express = require('express');
var app = express();
var passport = require('passport');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var path = require('path');

//Port Setting
var port = process.env.PORT || 3000;

//Set Morgan as Logger
app.use(morgan('dev'));

//Extract POST Data
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

//Session Cookie
app.use(cookieParser());
app.use(session({
    store: new RedisStore({
        host: '127.0.0.1',
        port: 6379
    }), 
    secret: 'super-secret',
    resave: true,
    saveUninitialized: true,
    cookie: {
        httpOnly: true,
        secure: false //turn to true on production once https is in place
    }
}));

1 个答案:

答案 0 :(得分:1)

(从评论中转移)

我认为您希望flushdb删除所有密钥。 del无法指定通配符,因此del keys *将尝试删除两个键:一个名为“keys”,另一个名为“*”。响应0表示删除了0个键。