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:
Com o cliente aberto podemos escolher qual database queremos trabalhar, utilizando o comando select.
Basta informar qual o índice da base que queremos utilizar.
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 “*”.
Se nossas keys fossem nomeadas com o prefixo “cache” ou “session”, poderíamos consultá-las assim:
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.
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:
Agora abra seu arquivo settings.py e adicione a variável CACHES com os seguintes valores:
‘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:
‘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
# […] 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_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:
Como testar
Vá até a pasta do nosso projeto e execute o syncdb para sincronizar a base de dados.
Inicie também o servidor de desenvolvimento do Django.
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: