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:
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:
Crie um arquivo em app/config/redis.php com as seguintes variáveis:
No final do arquivo init.php adicione:
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!
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:
- <?php
- class 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:
- <?php
- return [
- '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!