2016-07-31 16 views
0

Ich verwende Redis, um meine Sitzungsdaten für meine ExpressJS-Anwendung zu speichern, und in der Vergangenheit sind einige Probleme aufgetreten, bei denen der permanente Cookie meinen Benutzer angemeldet hält und Probleme bei der Entwicklung verursacht. Ich habe versucht, meine Sitzungsdaten mit dem redis-cli zu löschen, aber obwohl ich DEL KEYS * ausgeführt und die (integer) 0 Antwort erhalten habe, sehe ich immer noch die Sitzungen erscheinen, wenn ich KEYS * ausführen. Kann mir jemand helfen, diese Daten zu entfernen?Redis Sitzungsschlüssel nicht löschen

Beispiel:

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" 

Express.js Code, um die Sitzungsdaten zu speichern:

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

Ich denke, Sie möchten ['flushdb'] (http://redis.io/commands/flushdb) alle Schlüssel löschen. 'del' hat keine Möglichkeit, einen Platzhalter anzugeben. 'del keys *' wird versuchen, zwei Schlüssel zu löschen: einen "Schlüssel" und einen "*". – smarx

+0

BTW, die Antwort "0" bedeutet, dass 0 Schlüssel gelöscht wurden. – smarx

+0

@smarx das hat perfekt funktioniert und danke für die Erinnerung an die 0-Antwort. Kannst du das bitte als Antwort angeben und ich werde das als richtig markieren? – cphill

Antwort

1

(Übertragung von Kommentaren)

Ich glaube, Sie flushdb wollen alle Schlüssel löschen. del hat keine Möglichkeit, einen Platzhalter anzugeben, also versucht del keys *, zwei Schlüssel zu löschen: einen, der "Schlüssel" genannt wird, und einen, der "*" genannt wird. Die Antwort 0 bedeutet, dass 0 Schlüssel gelöscht wurden.