sql >> Databasteknik >  >> NoSQL >> Redis

Hur sparar och hämtar man sträng med accenter i redis?

Redis-servern själv lagrar all data som binära objekt, så den är inte beroende av kodningen. Servern kommer bara att lagra det som skickas av klienten (inklusive UTF-8-tecken).

Här är några experiment:

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

c3a9 är representationen av "é"-tecknet.

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

Faktum är att uppgifterna är korrekt lagrade i Redis-servern. Men när den startas i en terminal tolkar Redis-klienten utdata och tillämpar sdscatrepr-funktionen för att transformera icke utskrivbara tecken (vars definition är beroende av språk och kan brytas för multibyte-tecken ändå).

En enkel lösning är att starta redis-cli med alternativet 'rå':

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

Din egen applikation kommer förmodligen att använda ett av klientbiblioteken snarare än redis-cli, så det borde inte vara ett problem i praktiken.




  1. Vad är Redis pubsub och hur använder jag det?

  2. MongoDB:Fruktansvärda MapReduce Performance

  3. Fråga efter data från MongoDB med GraphQL i Django:Get-Go (1)

  4. Hur drar man en instans av ett objekt i en array i MongoDB?