redis vs nativo sessioni

Sto usando le sessioni in PHP per monitorare se un utente è connesso. Io non la uso per memorizzare altri dati sull’utente, in sostanza, è come il controllo di una tabella hash per vedere se l’utente è autenticato.

Ci sarebbe qualche vantaggio all’utilizzo di redis, invece di nativi sessioni PHP?

Io sono curioso di sapere le prestazioni, la scalabilità e la sicurezza (non veramente interessati con la complessità di codice).

  • Non penso davvero che si devono preoccupare più di tanto sessioni a meno che non si ottiene ENORME ammounts di traffico, PHP gestire le sessioni di bene, e se si conservano solo pochi dati, dovrebbe andare bene anche con un sacco di richieste, e a proposito di prestazioni dovrebbe essere vicino, come redis non è nativa di PHP.
  • grazie! cosa significa massiccia? come 10k utenti in una volta, o come 1mil? ho capito dipende dal mio computer, ma im cercando di vedere se il php potrebbe avere un certo limite superiore (come se si trattasse di memorizzare ogni sessione come un singolo file, rendendolo soggetto a OSs le prestazioni del filesystem).
  • Beh, mi preoccuperei per l’utilizzo della memoria del server, in questo caso, come è tutto memorizzato in RAM, con 10k di utenti, se ogni utente utilizza come 1kb di dati di sessioni, consuma 10.000 kb o 10~mb, che non è molto, PHP è abbastanza intelligente per utilizzare un buon numero sufficiente di dati con la struttura e la fretta di scrivere e di leggere quei valori, il problema è se la sessione di dati è troppo grande, o per qualche motivo il server consuma troppe risorse di lettura dei dati di sessione, ma che, normalmente, se si tratta di dati è troppo grande.
  • che era la risposta che cercavo, grazie!
  • Solo per la cronaca, entrambi i gosu kiwi e Sripathi Krishnan sono sbagliato qui. PHP negozi sessioni di default nel file temporanei, il che significa che redis sarà sempre eseguire meglio (visto che è principalmente basato in memoria). Ma detto questo, è vero che si potrebbe non ottenere un significativo miglioramento passando a redis, se non hai un collo di bottiglia lì, in primo luogo.
InformationsquelleAutor tau | 2012-04-09

 

3 Replies
  1. 19

    Si desidera che il salvataggio della sessione gestore per essere veloce. Questo è dovuto al fatto che una sessione di PHP in grado di bloccare tutti gli altri concorrenti richieste dallo stesso utente, fino alla prima richiesta è finito.

    Ci sono una varietà di gestori, si potrebbe utilizzare per le sessioni di PHP su più server: File w/NFS, Database MySQL, Memcache, e Redis.

    Database metodo (utilizzando InnoDB) è stato il più lento nella mia esperienza, seguita da File w/NFS. Di chiusura e scrivi contesa sono i fattori principali. Memcache e Redis fornire prestazioni simili e sono di gran lunga le migliori alternative in quanto tutte le operazioni sono in RAM. Redis è la mia scelta, perché si può attivare il disco di persistenza, e Memcache è solo memoria.

    Spiego Redis Sessioni in PHP con Kohana se si desidera ulteriori informazioni. Qui è il nostro pannello di controllo per la gestione di Redis chiavi:

    redis vs nativo sessioni

  2. 14

    Di utilizzare qualcosa come Redis per memorizzare sessioni è un ottimo modo per ottenere le prestazioni di bilanciamento del carico dei server.

    Per esempio su Amazon Web Services, il bilanciamento del carico di avere quello che si chiama ‘sticky session’. Che cosa questo significa è che quando un utente si collega a web app, ad esempio, quando si accede ad esso, il bilanciamento del carico scegli una delle tue app server e l’utente continuerà ad essere servita da questo server finché non uscire dall’applicazione. Questo perché le sessioni utilizzato da PHP, per esempio, verranno memorizzati sul server app che inizia ad usare.

    Ora, se si utilizza Redis su un server separato, quindi configurare il PHP su ogni app server per memorizzare sessioni in Redis, è possibile attivare questa ‘appiccicoso sessioni off. Questo significa che ogni server è in grado di accedere alle sessioni e, pertanto, l’utente deve essere servito da un server diverso con ogni richiesta per la vostra applicazione. Questo rende in ultima analisi, per un uso più efficiente di bilanciamento del carico di set-up.

  3. -1

    Non penso davvero che si devono preoccupare più di tanto sessioni a meno che non si ottiene ENORME ammounts di traffico, PHP gestire le sessioni di bene, e se si conservano solo pochi dati, dovrebbe andare bene anche con un sacco di richieste, e a proposito di prestazioni dovrebbe essere vicino, come redis non è nativa di PHP.

    Con 10k di utenti, se ogni utente utilizza come 1kb di dati di sessioni, consuma 10.000 kb o 10~mb, che non è molto, PHP è abbastanza intelligente per utilizzare un buon numero sufficiente di dati con la struttura e la fretta di scrivere e di leggere quei valori. Il problema è che se la sessione di dati è troppo grande, o per qualche motivo il server consuma troppe risorse di lettura dei dati di sessione, ma che, normalmente, se si tratta di dati è troppo grande.

Lascia un commento