Redis
 sql >> Database >  >> NoSQL >> Redis

Come salvare e recuperare stringhe con accenti in redis?

Il server Redis stesso memorizza tutti i dati come oggetti binari, quindi non dipende dalla codifica. Il server memorizzerà solo ciò che viene inviato dal client (inclusi i caratteri UTF-8).

Ecco alcuni esperimenti:

$ echo téléphone | hexdump -C
00000000  74 c3 a9 6c c3 a9 70 68  6f 6e 65 0a              |t..l..phone.|

c3a9 è la rappresentazione del carattere 'é'.

$ redis-cli
> set t téléphone
OK
> get t
"t\xc3\xa9l\xc3\xa9phone"

In realtà i dati sono archiviati correttamente nel server Redis. Tuttavia, quando viene avviato in un terminale, il client Redis interpreta l'output e applica la funzione sdscatrepr per trasformare i caratteri non stampabili (la cui definizione dipende dalle impostazioni locali e potrebbe comunque essere interrotta per i caratteri multibyte).

Una semplice soluzione alternativa è avviare redis-cli con l'opzione 'raw':

$ redis-cli --raw
> get t
téléphone

La tua applicazione probabilmente utilizzerà una delle librerie client anziché redis-cli, quindi non dovrebbe essere un problema in pratica.