Redis Serializer

banner

Nella scorsa puntata abbiamo visto come Redis possa essere sfruttato come session store all’interno di Spring: ma come fare per associare l’utente ad una sessione specifica? Scopriamo Redis Serializer!

Redis Serializer

In questo post, l’attenzione sarà rivolta all’adozione di un Serializer di sessione alternativo che migliora la nostra capacità di identificare l’utente collegato a una sessione specifica, consentendo un’analisi più dettagliata dei valori della sessione. In questo, il Serializer per il formato JSON è la scelta più ovvia. Memorizzando i valori degli attributi di sessione in formato JSON, migliora significativamente la leggibilità e l’interpretabilità dei dati.

L’implementazione di questo cambiamento richiede lo sviluppo di una classe ad-hoc, in cui viene definito il Serializer da utilizzare. A tal proposito, l’integrazione Spring Data Redis fornisce un set di RedisSerializer da poter utilizzare a tale scopo, come mostrato nella seguente implementazione:

@Configuration
public class SessionConfig implements BeanClassLoaderAware {

    private ClassLoader loader;

    @Bean
    public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
        return new Jackson2JsonRedisSerializer(objectMapper(), Object.class);
    }

    private ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModules(SecurityJackson2Modules.getModules(this.loader));
        return mapper;
    }

    @Override
    public void setBeanClassLoader(ClassLoader classLoader) {
        this.loader = classLoader;
    }

}

In questa configurazione è stato scelto il Jackson2JsonRedisSerializer, rendendo super facile integrare il nuovo metodo di serializzazione, permettendoci di gestire i dati di sessione in modo molto più chiaro e diretto.

Esistono diverse opzioni di RedisSerializer adatte a vari casi d’uso. Per ottenere indicazioni sulla migliore opzione per le vostre esigenze specifiche, si rimanda ai test di prestazione effettuati, accessibili nel seguente repository GitHub:

Credits by Foogaro repo - Serialization time by Serializer

Dopo aver cancellato tutte le sessioni precedentemente memorizzate in Redis, l’applicazione può essere eseguita nuovamente e il login può essere effettuato come descritto in precedenza. A questo punto, la sessione verrà generata come al solito, ma i valori dei suoi attributi saranno in formato JSON, come illustrato di seguito:

Redis JSON Session

La leggibilità è stata notevolmente migliorata, consentendo l’utilizzo di un parser JSON per navigare più efficacemente la struttura JSON.

Tuttavia, è ancora necessario uno sforzo manuale e individuare l’utente associato a una sessione rimane un processo impegnativo e soggetto a errori.

Nell’ultimo post, vedremo come utilizzare l’indicizzazione delle sessioni per migliorare le prestazioni della gestione delle sessioni e facilitare l’identificazione degli utenti all’interno del sistema!

Per approfondire l’argomento, Luigi Fùgaro ha pubblicato insieme a Mirko Ortensi un manuale su Redis, chiamato “Redis Stack for Application Modernization: Build real-time multi-model applications at any scale with Redis”: scoprilo qui!

Post correlati

Iscriviti al TheRedCode.it Corner

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!