BC
Como implementar cache de objetos com REDIS
Por padrão o Adianti permite um cache de objetos com a classe TAPCache, que utiliza o APCu.
Desenvolvi a classe RedisCache que permite a utilização com o Redis.
Segue o link do código da classe:
https://gist.github.com/brunoconstantino/32a7ec5ae89530f9c55da637984b2d6e
Esta classe RedisCache.php deverá ser colocada em app/lib/registry/RedisCache.php
Para usar é bem simples:
Na Model que desejar colocar o cache, defina a variável CACHECONTROL com 'RedisCache'. Igual o exemplo abaixo:
Desenvolvi a classe RedisCache que permite a utilização com o Redis.
Segue o link do código da classe:
https://gist.github.com/brunoconstantino/32a7ec5ae89530f9c55da637984b2d6e
Esta classe RedisCache.php deverá ser colocada em app/lib/registry/RedisCache.php
Como utilizar?
Para usar é bem simples:
Na Model que desejar colocar o cache, defina a variável CACHECONTROL com 'RedisCache'. Igual o exemplo abaixo:
<?phpclass Customer extends TRecord{ const TABLENAME = 'customer'; const PRIMARYKEY = 'id'; const IDPOLICY = 'max'; // {max, serial} const CACHECONTROL = 'RedisCache';}?>
Alterando os dados de conexão
Por padrão, a classe irá se conectar ao redis local. 127.0.0.1:6379
Caso deseje mudar a conexão com o banco de dados, existe duas formas:
Alterando os dados de conexão - Forma 1:
Crie um arquivo em app/config/redis.php com as seguintes variáveis:
<?phpreturn [ 'host' => '127.0.0.1', 'port' => 6379, //'password' => 'secretkey', 'connectTimeout' => 2.5, //'lifetimeKey' => 3600 // Prazo de Expiração dos objetos (em segundos) ];?>
Alterando os dados de conexão - Forma 2:
No final do arquivo init.php adicione:
<?php $database = [ 'host' => '127.0.0.1', 'port' => 6379, //'password' => 'secretkey', 'connectTimeout' => 2.5, //'lifetimeKey' => 3600 // Prazo de Expiração dos objetos (em segundos) ]; RedisCache::setDatabaseInfo($database);?>
Adicionar prazo para expiração de objetos
O Redis permite que você crie objetos com prazo para ser expirado, e esta classe está apta a utilizar este recurso.
Para ativar, basta definir nas configurações o parâmetro lifetimeKey com a quantidade de segundos que deseja que o objeto expire.
Este recurso não funciona com a configuração padrão do REDIS, devendo ser realizada a configuração na Forma 1 ou Forma 2.
Mais informações sobre Cache de Objetos:
https://www.adianti.com.br/forum/pt/view_1341?banco-de-dados-em-memoria-nao-span
Obrigado!
Parabéns Bruno!