Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como salvar e recuperar string com acentos no redis?


O próprio servidor Redis armazena todos os dados como objetos binários, portanto, não depende da codificação. O servidor apenas armazenará o que é enviado pelo cliente (incluindo caracteres UTF-8).

Aqui estão alguns experimentos:
$ echo téléphone | hexdump -C
00000000  74 c3 a9 6c c3 a9 70 68  6f 6e 65 0a              |t..l..phone.|

c3a9 é a representação do caractere 'é'.
$ redis-cli
> set t téléphone
OK
> get t
"t\xc3\xa9l\xc3\xa9phone"

Na verdade, os dados estão armazenados corretamente no servidor Redis. No entanto, quando é iniciado em um terminal, o cliente Redis interpreta a saída e aplica a função sdscatrepr para transformar caracteres não imprimíveis (cuja definição depende da localidade e pode ser quebrada para caracteres multibyte de qualquer maneira).

Uma solução simples é iniciar o redis-cli com a opção 'raw':
$ redis-cli --raw
> get t
téléphone

Seu próprio aplicativo provavelmente usará uma das bibliotecas do cliente em vez de redis-cli, portanto, não deve ser um problema na prática.