sql >> Databáze >  >> NoSQL >> Redis

Jak uložit a načíst řetězec s diakritikou v redis?

Samotný server Redis ukládá všechna data jako binární objekty, takže není závislý na kódování. Server pouze uloží to, co odešle klient (včetně znaků UTF-8).

Zde je několik experimentů:

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

c3a9 je reprezentace znaku 'é'.

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

Ve skutečnosti jsou data správně uložena na serveru Redis. Když je však spuštěn v terminálu, klient Redis interpretuje výstup a aplikuje funkci sdscatrepr k transformaci netisknutelných znaků (jejichž definice je závislá na národním prostředí a u vícebajtových znaků může být stejně narušena).

Jednoduchým řešením je spustit redis-cli s možností 'raw':

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

Vaše vlastní aplikace bude pravděpodobně používat některou z klientských knihoven spíše než redis-cli, takže by to v praxi neměl být problém.




  1. Souběžnost v gopkg.in/mgo.v2 (Mongo, Go)

  2. Ukládání null versus neukládání klíče vůbec v MongoDB

  3. Mongodb:Dotaz na objekt json vnořený do pole

  4. Jak znovu připojit klienta redis po restartu/škálování serveru redis