Armadilhas encontradas no trabalho e minha própria forma de aprendizado e iluminação

Olá, amigos, hoje vou compartilhar com vocês as armadilhas que encontrei no trabalho e um pouco de minha própria cognição e compreensão no trabalho, esperando trazer a vocês alguns ganhos e inspirações.


1. Os 16 bancos de dados padrão do Redis e suas funções:

        A primeira coisa a observar é a compreensão do redis. Em primeiro lugar, o Redis é um servidor de armazenamento estruturado por dicionário. Na verdade, a instância do Redis fornece vários dicionários para armazenar dados. O cliente pode especificar em qual dicionário armazenar o banco de dados. Isso é semelhante à criação de vários bancos de dados no MySQL, e cada dicionário pode ser entendido como um banco de dados independente. Esse banco de dados é baseado apenas em uma única máquina.Se for um cluster, não há conceito de banco de dados.

        Cada banco de dados é nomeado externamente com um número crescente começando em 0. O Redis suporta 16 bancos de dados por padrão (mais podem ser suportados por meio do arquivo de configuração, sem limite superior). Ou seja, modifique o número atrás do banco de dados no arquivo de configuração para alcançar cada deles.Dicionários são entendidos como um banco de dados separado. Após a conexão do cliente, o banco de dados número 0 é selecionado por padrão e você pode usar SELECT para optar por substituir o banco de dados

redis> SELECT 1 
OK 
redis [ 1] > GET foo 
(nil)

        A diferença entre os bancos de dados estabelecidos com bancos de dados relacionais é: 1. Ele não oferece suporte a nomes de bancos de dados personalizados, todos nomeados com números de série. Os usuários devem lembrar qual banco de dados armazena quais dados, e o Redis só pode definir uma senha. Ou seja, o cliente pode acessar todos os dados ou nenhum deles. Em geral, esses bancos de dados são mais como um namespace, que não é adequado para armazenar dados de diferentes programas aplicativos. Porque o comando FLUSHALL pode limpar os dados em todos os bancos de dados em uma instância do Redis. Por exemplo, você pode usar o banco de dados 0 para armazenar os dados de um ambiente de teste de aplicativo e o banco de dados 1 para armazenar dados no ambiente de produção. Não é adequado usar o banco de dados 1 para armazenar dados para o aplicativo A e o banco de dados 2 para armazenar dados para aplicativo B. Aplicativos diferentes devem usar Redis diferentes A instância de armazenamento armazena dados e a instância do Redis não ocupa muita memória, portanto, você pode criar várias instâncias sem se preocupar com o fato de várias instâncias ocuparem muita memória.

O entendimento atual de consultar dados e executar várias instâncias do redis é particioná-los para armazenar dados de diferentes aplicativos, o que provavelmente não está correto, e espero que você possa me corrigir quando o vir.

2. A diferença entre CPU e GPU: CPU (Unidade Central de Processamento) é usada principalmente para processar vários tipos de banco de dados e, ao mesmo tempo, o julgamento lógico introduzirá um grande número de saltos de ramificação e processamento de interrupção, para que a CPU não seja A única GPU (Graphics Processing Unit) usada se depara com um tipo altamente unificado de dados em larga escala que são independentes uns dos outros e um ambiente de computação pura que não precisa ser interrompido.

3. Em relação ao ambiente de produção atual, a maioria deles está no ambiente python2. Ubuntu vem com python2.7 e 3.5, mas python2.7 ainda é usado. Em relação às armadilhas de criar projetos Django no ambiente python2.7, por que não python2.7 criar projetos Django? A razão pode ser que 1. O caminho aparece em chinês, 2. A versão do Django usada é muito alta. Deve ser inferior a 1.11 para criar com sucesso. Geralmente, esses dois problemas, e alguns deles são deficientes e clicaram na coisa errada .

4. As informações de caracteres transmitidas por python2.7 sempre usam requests.post para serem unicode. Se você quiser convertê-lo para utf8, basta adicionar .encode("utf8") depois dele.

Sobre a solução de que a primeira camada do valor de retorno jsonresponse não suporta chinês:

Apenas limitado a python2.7, você pode modificar a codificação padrão no método correspondente

import sys 

reload(sys) 

sys.setdefaultencoding( ' utf8 ' )

Como unicode str e byte array são diferenciados em python3 e a codificação padrão não é mais código ascii, esse problema não existirá

O parâmetro json_dumps_params={"ensure_ascii": False} em jsonresponse é usado para oferecer suporte à exibição de chinês no lado do usuário ao retornar dados para o usuário, mas se a função eval for usada para convertê-lo em um dict, o chinês não será exibido , mas se o valor for obtido separadamente, o chinês ainda será exibido.

#Portanto , os dados de retorno podem ser escritos de duas maneiras 
# A primeira é mais segura, e o chinês pode ser exibido em qualquer lugar 
data = json.dumps(data, ensure_ascii= False)
 return Response(data)
 #O segundo tipo 
ret = update_s( request.data[ " nome de usuário " ], request.data[ " pwd " ]) 
data = {
     " status " : " 100 " , " res " : ret, " mensagem " : " operação bem-sucedida " }
 return JsonResponse(dados,
    json_dumps_params={ "
    
    assegurar_ascii " : Falso})

 

Acho que você gosta

Origin blog.csdn.net/bruce_van/article/details/103152797
Recomendado
Clasificación