Redis
 sql >> Base de données >  >> NoSQL >> Redis

Comment enregistrer et récupérer une chaîne avec des accents dans redis ?

Le serveur Redis lui-même stocke toutes les données sous forme d'objets binaires, il ne dépend donc pas de l'encodage. Le serveur stockera simplement ce qui est envoyé par le client (y compris les caractères UTF-8).

Voici quelques expériences :

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

c3a9 est la représentation du caractère 'é'.

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

En fait, les données sont correctement stockées sur le serveur Redis. Cependant, lorsqu'il est lancé dans un terminal, le client Redis interprète la sortie et applique la fonction sdscatrepr pour transformer les caractères non imprimables (dont la définition dépend des paramètres régionaux et peut de toute façon être cassée pour les caractères multioctets).

Une solution simple consiste à lancer redis-cli avec l'option 'raw' :

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

Votre propre application utilisera probablement l'une des bibliothèques clientes plutôt que redis-cli, cela ne devrait donc pas poser de problème dans la pratique.