2012-09-23 11 views
9

node.js + express uygulaması için oturum mağazam olarak redis kullanıyorum ... eski oturumları süreleri dolduğunda otomatik olarak silecek mi?, eski express.js oturumlarımı yeniden silecek mi?

... ya da sunucu tarafında bir miktar temizleme yapmam gerekiyor mu?

var RedisStore = require('connect-redis')(express) 

    app.use(express.session({ 
    store: new RedisStore({ 
     host: cfg.redis.host, 
     db: cfg.redis.db 
    }), 
    secret: 'foobar' 
    })); 

cevap

9

Evet, connect-redis süresi dolduğunda Redis sizin oturumları temizlemek yapacak (böylece db çok büyük büyümek değildir).

Yanlış hatırlamıyorsam

, varsayılan timeout bana bellekte boşta şey tutmak için oldukça uzun bir süre 24 saattir, ancak istediğiniz kadar süre (saniye cinsinden) burayı yapılandırmak için bir ttl parametre verebilir Redis onları sona erdirmeden önce oturumlar tutuldu.

Redis'in sizin için her şeyi temizlediğinden emin olmak istiyorsanız, zaman aşımını 30 saniyeye ayarlayıp zaman aşımının sona ermesinden sonra Redis'e bir göz atmanız yeterlidir;

app.use(express.session({ 
    store: new RedisStore({ 
    host: cfg.redis.host, 
    db: cfg.redis.db, 
    ttl: 30 
    }), 
    secret: 'foobar' 
})); 

ttl seçenekleri here belirtilmekte ve diğer seçenekler here nasıl etkileşimde olacağını bazı küçük ekstra bir detay var.

+0

i 2 hafta sonra sona benim çerez onlar REDIS dışına silinmiş alamadım bu yüzden çok 2 haftaya ttl değiştirmek gerekiyor kurdu? – chovy

+0

@chovy Evet, eğer Redis'in oturumları hafızada 2 hafta boyunca saklamasını istiyorsanız, bunu yapmalısınız. Bir tür hibrid oturum depolamasına bakmak isteyebilirsiniz, ancak son birkaç saat boyunca aktif olan Redis'te oturumları saklamak ve daha uzun süre boşta kalan oturumlar için bunları diskte saklamak, hafızayı kurtarmak için iyi bir fikir olabilir. –

+0

2. linkte, yazarın ne demek istediği "Çerez maxAge'den önce gelen ttl seçeneği eklendi. Şimdi oturum ttl (options.ttl, cookie.maxAge, oneDay) hangisi önce tanımlanmışsa." - Bu, cookie.maxAge öğesini ayarlamış olduğum her şeye ttl ayarlayacağı anlamına mı geliyor? – chovy

4

Beklendiği gibi çalışıyor. Yalnızca tarayıcıya bağlı bir oturum yaparsam (kullanıcı aracısı kapandığında tanımlama bilgisi sona erer), 24 saat boyunca redis içinde yaşar (connect-redis'te bir ttl seçeneği belirlemedim).

2 hafta içinde sona erecek bir çerez ayarlıyorum, 14 gün boyunca redis içinde yaşıyor.

Bu komutlarla kontrol edebilirsiniz:

start redis-cli 
> keys * 
> ttl <key> 
İlgili konular