2016-07-31 90 views
0

我正在使用Redis爲我的ExpressJS應用程序存儲會話數據,並且在過去遇到了一些問題,其中持久cookie保持我的用戶登錄導致開發問題。我試圖用redis-cli清除我的會話數據,但儘管運行了DEL KEYS *並被給予了(integer) 0響應,但我仍然在運行KEYS *時看到會話出現。任何人都可以幫我刪除這些數據嗎?Redis不刪除會話密鑰

例如:存儲會話數據,

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 
    } 
})); 
+0

我想你想['flushdb'](http://redis.io/commands/flushdb)刪除所有密鑰。 'del'沒有辦法指定通配符。 'del keys *'會嘗試刪除兩個鍵:一個叫做「keys」,另一個叫做「*」。 – smarx

+0

順便說一下,響應'0'表示0個鍵已被刪除。 – smarx

+0

@smarx完美地工作,並感謝有關0響應的提醒。你能否提供這個答案作爲答案,我會標記爲正確的? – cphill

回答

1

(從評論傳輸)

我想你想flushdb刪除所有鍵。 del沒有指定通配符的方法,因此del keys *將嘗試刪除兩個鍵:一個名爲「keys」,另一個名爲「*」。響應0表示已刪除0個密鑰。