【问题标题】:Redis Not Deleting Session KeysRedis 不删除会话密钥
【发布时间】:2016-12-05 18:37:29
【问题描述】:

我正在使用 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
    }
}));

【问题讨论】:

  • 我认为您希望flushdb 删除所有密钥。 del 无法指定通配符。 del keys * 会尝试删除两个键:一个叫“keys”,一个叫“*”。
  • 顺便说一句,响应 0 表示删除了 0 个键。
  • @smarx 完美运行,感谢您对 0 响应的提醒。能否请您提供此答案,我将标记为正确?

标签: session express cookies redis


【解决方案1】:

(转自评论)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2014-07-08
    • 2015-09-01
    • 2014-10-12
    • 2017-10-08
    • 1970-01-01
    • 2015-12-18
    相关资源
    最近更新 更多