sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo guardar y recuperar una cadena con acentos en redis?

El propio servidor de Redis almacena todos los datos como objetos binarios, por lo que no depende de la codificación. El servidor solo almacenará lo que envíe el cliente (incluidos los caracteres UTF-8).

Aquí hay algunos experimentos:

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

c3a9 es la representación del carácter 'é'.

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

En realidad, los datos se almacenan correctamente en el servidor Redis. Sin embargo, cuando se inicia en una terminal, el cliente de Redis interpreta la salida y aplica la función sdscatrepr para transformar los caracteres no imprimibles (cuya definición depende de la configuración regional y, de todos modos, puede dividirse por caracteres multibyte).

Una solución sencilla es iniciar redis-cli con la opción 'sin procesar':

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

Su propia aplicación probablemente usará una de las bibliotecas del cliente en lugar de redis-cli, por lo que no debería ser un problema en la práctica.