Redisサーバー自体は、すべてのデータをバイナリオブジェクトとして保存するため、エンコーディングに依存しません。サーバーは、クライアントから送信されたもの(UTF-8文字を含む)を保存するだけです。
ここにいくつかの実験があります:
$ echo téléphone | hexdump -C
00000000 74 c3 a9 6c c3 a9 70 68 6f 6e 65 0a |t..l..phone.|
c3a9は、「é」文字の表現です。
$ redis-cli
> set t téléphone
OK
> get t
"t\xc3\xa9l\xc3\xa9phone"
実際、データはRedisサーバーに正しく保存されています。ただし、端末で起動されると、Redisクライアントは出力を解釈し、sdscatrepr関数を適用して印刷不可能な文字を変換します(その定義はロケールに依存し、マルチバイト文字では壊れることがあります)。
簡単な回避策は、「raw」オプションを指定してredis-cliを起動することです。
$ redis-cli --raw
> get t
téléphone
独自のアプリケーションはおそらくredis-cliではなくクライアントライブラリの1つを使用するため、実際には問題にはならないはずです。