sql >> Database >  >> NoSQL >> Redis

Hoe een string met accenten in redis op te slaan en op te halen?

De Redis-server slaat zelf alle gegevens op als binaire objecten, dus het is niet afhankelijk van de codering. De server slaat alleen op wat door de client wordt verzonden (inclusief UTF-8-tekens).

Hier zijn een paar experimenten:

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

c3a9 is de representatie van het 'é'-teken.

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

Eigenlijk zijn de gegevens correct opgeslagen op de Redis-server. Wanneer het echter in een terminal wordt gestart, interpreteert de Redis-client de uitvoer en past de sdscatrepr-functie toe om niet-afdrukbare tekens te transformeren (waarvan de definitie afhankelijk is van de landinstelling en hoe dan ook kan worden verbroken voor multibyte-tekens).

Een eenvoudige oplossing is om redis-cli te starten met de 'raw' optie:

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

Uw eigen toepassing zal waarschijnlijk een van de clientbibliotheken gebruiken in plaats van redis-cli, dus in de praktijk zou het geen probleem moeten zijn.




  1. Mongodb $lookup Werkt niet met _id

  2. best practice van django + PyMongo pooling?

  3. Trek en voeg tegelijkertijd toe met mongo

  4. Redis configureren om consequent oudere gegevens eerst te verwijderen