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!


🔗 Leggi anche:

Bio autore

Articolo scritto da Luigi Fùgaro (Foo).

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Welyk
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls Italy
Logo di Improove
Logo de Il Libro Open Source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di DevDojo

Vuoi diventare tech content creator? 🖊️

Se ti va di raccontare la tua esperienza nel mondo tech, questo è il posto giusto.

Cerchiamo voci autentiche, esempi pratici e punti di vista utili per chi legge.

Scrivici a collaborazioni[at]theredcode.it con una proposta: idea, taglio del contenuto e una breve presentazione. Non vediamo l'ora di leggere la tua esperienza!

Invia la tua idea