Pular para o conteúdo
Ramos da Informática - Comunidade de Desenvolvedores

Torne-se um desenvolvedor FullStack: Pacote completo de formação desenvolvedor Frontend e Backend utilizando as linguagens de programação e frameworks mais procurados no mercado de trabalho. Mais informações, aqui. Faça o download do E-BookGuia Completo Para Se Tornar um(a) Desenvolvedor(a) Full-Stack, Começando do ZERO”.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

Engenheiro de Software, autor de livros sobe tecnologia e negócios. É mantenedor do site Ramos da Informática. Hobbies: investir em ações, natação e finanças.

admin

Todos os artigos deste autor

Usando Redis para cache e sessão do Django

Chatbots com Whatsapp e Cielo integrados Nesse curso, eu vou te mostrar como o consumidor poder realizar um pagamento por dentro do aplicativo do WhatsApp, aonde o seu cliente vai entrar numa conversa como entraria numa conversa com qualquer pessoa ou com a sua empresa, navegar entre os produtos/serviços em menus simples enviados pelo chatbot, adicionar esses produtos/serviços no carrinho de compras, e num determinado ponto do chat, um link exclusivo é enviado para o cliente preencher os dados do cartão de crédito. No final, a análise é devolvida para o Whatsapp no qual a conversa foi iniciada. Inscreva-se.

Nesse post irei explicar como substituir o sistema de cache e sessão do Django para funcionar com o Redis.
Vou explicar como instalar e alguns comandos do Redis.
Depois como Django trabalha como o cache e sessão e logo em seguida vamos aprender a alterar o Django para utilizar o Redis como forma de armazenamento.

Redis

Redis é um armazenador de dados no formato “key-value” ou “chave-valor”.
O acrônimo Redis significa “REmote DIctionary Server”.
Os dados são armazenados por padrão são em memória, porém você pode configurá-lo para armazenar em disco.

Instalação

Acesse o tutorial oficial de instalação do Redis, baixe a versão mais nova e siga os passos descritos para finalizar a instalação.

Comandos básicos

Quando o Redis é instalado, ele cria um atalho para seu cliente chamado redis-cli e com ele podemos executar os comandos abaixo:

Primeiro abra o cliente:

>> redis-cli

Com o cliente aberto podemos escolher qual database queremos trabalhar, utilizando o comando select.
Basta informar qual o índice da base que queremos utilizar.

127.0.0.1:6379 > select 1

Nesse caso selecionamos a base de índice 1 para realizar as consultas.

Se quisermos consultar todas as keys que estão armazenadas, basta utilizarmos o comando keys com um parâmetro “*”.

127.0.0.1:6379[1] > keys *

Se nossas keys fossem nomeadas com o prefixo “cache” ou “session”, poderíamos consultá-las assim:

127.0.0.1:6379[1] > keys cache:*
127.0.0.1:6379[1] > keys session:*

Existe também a lista completa de comandos.

Django

Utilizarei nesse exemplo versão “1.6.4” do Django.

pip install Django==1.6.4

Para instalar e configurar um ambiente para o Django basta seguir um dos tutoriais abaixo:

Regis da Silva – Quem quer aprender Django
Thiago Corôa – Instalação Python e Django

Inicie um novo projeto e faça as configurações abaixo.

Cache

O Django vem com um framework de cache que segue a seguinte filosofia:

Deve ser o mais rápido possível
Deve provê uma interface consistente entre diferentes backends
Deve ser extensível o suficiente para atender as necessidades do desenvolvedor

Toda a configuração de cache fica armazenado na variável CACHES no nosso settings.py.

Utilizarei a biblioteca django-redis como nosso backend de cache e session.

Vamos instalar o django-redis:

pip install django-redis

Agora abra seu arquivo settings.py e adicione a variável CACHES com os seguintes valores:

CACHES = {
‘default’: {
‘BACKEND’: ,
‘LOCATION’: ,
‘OPTIONS’: {
‘CLIENT_CLASS’: ,
}
}
}

O que significa esses valores??

BACKEND : Caminho para a classe que será responsável por realizar adicionar, remover, alterar os dados do cache.

LOCATION: Localização do cache para ser utilizado, no nosso caso é o IP:porta:Número do banco de dados

CLIENT_CLASS: Própria do django-redis, serve para determinar qual classe será utilizada como cliente.

Iremos utilizar as classes padrão do django-redis e sua configuração final ficará assim:

CACHES = {
‘default’: {
‘BACKEND’: ‘redis_cache.cache.RedisCache’,
‘LOCATION’: ‘127.0.0.1:6379:1’,
‘OPTIONS’: {
‘CLIENT_CLASS’: ‘redis_cache.client.DefaultClient’,
}
}
}

Links úteis:

Django cache framework
Django cache framework phisolophy
Classes client disponíveis para django-redis

Sessões

Para ativar a funcionalidade de sessão, é preciso editar a variável MIDDLEWARE_CLASSES no arquivo settings.py.
Basta adicionar django.contrib.sessions.middleware.SessionMiddleware dentro da listagem.

settings.py

MIDDLEWARE_CLASSES = [
# […] outros middlewares
‘django.contrib.sessions.middleware.SessionMiddleware’
]

Por padrão a sessão já vem ativada.

Vamos utilizar uma sessão baseada no cache, como já foi instalado o django-redis só é adicionar as seguintes linhas no arquivo settings.py

SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’
SESSION_CACHE_ALIAS = ‘default’

SESSION_CACHE_ALIAS se refere a chave que configuramos no cache, se configurássemos mais que um cache, poderíamos informar outro valor.

Links úteis:

How to use sessions

Como testar

Vá até a pasta do nosso projeto e execute o syncdb para sincronizar a base de dados.

python manage.py syncdb

Inicie também o servidor de desenvolvimento do Django.

python manage.py runserver

Abra seu navegador e entre na página de administração do Django localhost:8000/admin.

Faça seu login para que seja gravado um registro de sessão na base.

Para visualizar se o registro foi gravado com sucesso, execute os seguintes comandos:

>> redis-cli

127.0.0.1:6379> select 1
127.0.0.1:6379[1]> keys *

1) “:1:django.contrib.sessions.cachemnpnqzfl03iwugb99q9ls4w0k2r74gs2”

Se tudo ocorreu como planejado, nesse momento temos as sessões e o cache sendo armazenados no Redis.

Espero que tenha gostado, até o próximo!

Este artigo foi importado automaticamente por fazer parte do Planetário Dev. Quer fazer parte deste HUB de conteúdos? Faça parte do Planetário e veja as vantagens.

Não tem site ou blog? Seja um autor do site e ainda pode ser remunerado.

Leia também:

Facebook
LinkedIn
Twitter
Pinterest
Reddit
Telegram
WhatsApp
Email
Print

Relacionados

Deixe uma resposta