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.