Ho bisogno di caricare alcuni campi di informazione che cambiano di rado per la convalida dei percorsi a cui un utente potrebbe accedere.MongoDB vs Redis per le sessioni utente?
Attualmente, interrogo MongoDB e conservare quei campi in Redis a fianco un particolare informazioni di stato in un unico hash che viene digitato da 'user:' + mongodb_user_objectid
quando un utente accede a.
Poi ho creare una sessione per il cookie HTTP e negozio questa chiave come una stringa in redis è codificata da 'sess:' + session_id
.
Sarebbe meglio non copiare i campi da mongodb e gestire l'aggiornamento di redis e mongodb quando uno di questi campi di convalida potrebbe cambiare?
C'è una significativa differenza di prestazioni dalla lettura e scrittura di queste informazioni di sessione direttamente da/a mongodb senza utilizzare redis come intermediario?
Sono assolutamente d'accordo. di misurazione. Ri. la parte da indovinare - mentre io sono meno intimo con MongoDB, due dei casi d'uso classici di Redis sono la gestione delle sessioni e l'accelerazione/caching del DB. In particolare, poiché MongoDB non è un database in memoria, è comunemente aumentato con Redis in cui le prestazioni sono importanti (ad esempio http://redislabs.com/blog/the-top-3-game-changing-redis-use-cases:)) –
Grazie per il collegamento. Questo è tutto molto vero, ma, come sottolinea il link, il redis brilla davvero quando si tratta anche di * modificare * la sessione * spesso *, tenendo aggiornati i conteggi degli hit, i conteggi delle richieste, ecc. Questo è un punto in cui ha senso separare le operazioni più veloci e voluminose e garantire che le scritture ripetute vadano solo nella RAM. Tuttavia, l'OP non ha detto che stava scrivendo molto spesso, e anche allora, deve essere molto traffico per diventare una differenza importante. – mnemosyn
Quindi, dal momento che mongodb carica interi documenti in memoria, sarebbe uno spreco di RAM se ho solo bisogno di usare pochi campi dal documento mongodb dell'utente in una sessione? – paulkon