Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak zapisać i pobrać ciąg z akcentami w redis?

Sam serwer Redis przechowuje wszystkie dane jako obiekty binarne, więc nie jest zależny od kodowania. Serwer będzie po prostu przechowywać to, co jest wysyłane przez klienta (w tym znaki UTF-8).

Oto kilka eksperymentów:

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

c3a9 jest reprezentacją znaku 'é'.

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

W rzeczywistości dane są poprawnie przechowywane na serwerze Redis. Jednak po uruchomieniu w terminalu klient Redis interpretuje dane wyjściowe i stosuje funkcję sdscatrepr do przekształcania znaków niedrukowalnych (których definicja zależy od ustawień regionalnych i może zostać zerwana dla znaków wielobajtowych).

Prostym obejściem tego problemu jest uruchomienie redis-cli z opcją „surowe”:

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

Twoja własna aplikacja prawdopodobnie użyje jednej z bibliotek klienckich, a nie redis-cli, więc w praktyce nie powinno to stanowić problemu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MurmurHash - co to jest?

  2. Jak używać klastrów Node.js w mojej prostej aplikacji Express?

  3. Różnica między StackExchange.Redis i ServiceStack.Redis

  4. StackExchange.Redis.RedisTimeoutException:limit czasu oczekiwania na odpowiedź

  5. Jak skonfigurować połączenie z Redis Sentinel za pomocą biblioteki Jedis?