sql >> データベース >  >> NoSQL >> Redis

redisでアクセント付きの文字列を保存および取得するにはどうすればよいですか?

    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つを使用するため、実際には問題にはならないはずです。




    1. MongoDBクエリヘルプ-サブオブジェクト内の任意のキーの値をクエリします

    2. セットメンバーのTTL

    3. RedisはWindows7のWindowsサービスとして起動しません

    4. Redisの名前空間?