Redis e a escapar dos dados binários

estou a ter dificuldade em compreender como usar os tipos de dados binários com o redis. Quero usar o comando

   set '{binary data}' 'Alex'

e se os dados binários incluírem de facto um símbolo de citação ou /r / n? Sei que consigo escapar a personagens, mas há uma lista oficial de personagens que preciso de escapar?

Author: user1978109, 2014-08-29

5 answers

Não há necessidade de fazer nada de especial com os dados em si. Todas as cordas Redis são Binárias seguras.

O seu problema está relacionado com o redis-cli (que é um bom cliente redis para conhecer o Redis, mas quase nunca o que você quer na produção, por causa do uso e problemas de desempenho).

O seu problema também se relaciona com a fuga do terminal comum (bash/sh/outro). Aqui está uma boa explicação.

Sugiro que use python para isto, ou qualquer outro linguagem com que se sente confortável.

Exemplo:

import redis
cli=redis.Redis('localhost', 6379)
with open('data.txt','rb') as f:
  for d in f:
    t = d.partition('\t')
    cli.set(t[0], t[2].rstrip())
#EOF
 3
Author: Tw Bert, 2017-05-23 11:51:34

Você pode enviar o comando como um conjunto de cadeias de caracteres para o Redis, sem necessidade de escapar dos caracteres ou codificar o Base64. Uma vez que os strings de massa começam com o comprimento dos dados, o Redis não tenta processar os bytes de dados e, em vez disso, salta para o fim para verificar o par CR/LF de terminação:

*3<crlf>
$3<crlf>SET<crlf>
${binary_key_length}<crlf>{binary_key_data}<crlf>
${binary_data_length}<crlf>{binary_data}<crlf>
 1
Author: bmalec, 2015-12-14 16:27:51

Bytes arbitrários podem ser introduzidos em redis-cli usando uma notação hexadecimal, por exemplo

set "\x00\xAB\x20" "some value"
 1
Author: ghik, 2016-03-10 11:39:37

Descobri que é melhor usar o protocolo Redis para fazer isto, pois os limites podem ser definidos antes do tipo de dados.

 0
Author: user1978109, 2014-08-30 15:51:50

FastoNoSQL e FastoRedis conseguem lidar com chaves binárias sem escapar.

binary keys in redis

 -1
Author: Topilski Alexandr, 2017-08-11 15:17:45