Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Wie speichere und rufe ich Zeichenfolgen mit Akzenten in Redis ab?

Der Redis-Server selbst speichert alle Daten als binäre Objekte, ist also nicht auf die Kodierung angewiesen. Der Server speichert nur, was vom Client gesendet wird (einschließlich UTF-8-Zeichen).

Hier sind ein paar Experimente:

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

c3a9 ist die Darstellung des Zeichens 'é'.

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

Tatsächlich werden die Daten korrekt auf dem Redis-Server gespeichert. Wenn es jedoch in einem Terminal gestartet wird, interpretiert der Redis-Client die Ausgabe und wendet die Funktion sdscatrepr an, um nicht druckbare Zeichen umzuwandeln (deren Definition vom Gebietsschema abhängig ist und bei Multibyte-Zeichen sowieso beschädigt werden kann).

Eine einfache Problemumgehung besteht darin, redis-cli mit der Option „raw“ zu starten:

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

Ihre eigene Anwendung wird wahrscheinlich eher eine der Clientbibliotheken als redis-cli verwenden, daher sollte dies in der Praxis kein Problem darstellen.