PHPackages                             aledefreitas/zlx\_cache - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. aledefreitas/zlx\_cache

AbandonedArchivedLibrary[Caching](/categories/caching)

aledefreitas/zlx\_cache
=======================

Módulo de cache para ajudar na utilização de cache em sites

1.7.0(4y ago)0686MITPHPPHP &gt;=7.0

Since Jan 11Pushed 4y ago3 watchersCompare

[ Source](https://github.com/aledefreitas/zlx_cache)[ Packagist](https://packagist.org/packages/aledefreitas/zlx_cache)[ RSS](/packages/aledefreitas-zlx-cache/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (1)Versions (35)Used By (0)

ZLX Cache
=========

[](#zlx-cache)

[![Build Status](https://camo.githubusercontent.com/35701bef366681367f4f89c26bf838d4fa1307f2f987e3617cfec613638bb99e/68747470733a2f2f7472617669732d63692e6f72672f616c656465667265697461732f7a6c785f63616368652e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/aledefreitas/zlx_cache)[![Latest Stable Version](https://camo.githubusercontent.com/e18d46db04cc66f0fca826c2c90b8dbcff785e1e908c454a560e991f5f738808/68747470733a2f2f706f7365722e707567782e6f72672f616c656465667265697461732f7a6c785f63616368652f762f737461626c65)](https://packagist.org/packages/aledefreitas/zlx_cache)[![License](https://camo.githubusercontent.com/3e8e1ba2451b5dad1100771e2b57bcb9035df2589dffef68fafb1b2d83a8eb73/68747470733a2f2f706f7365722e707567782e6f72672f616c656465667265697461732f7a6c785f63616368652f6c6963656e7365)](https://packagist.org/packages/aledefreitas/zlx_cache)

### Introdução

[](#introdução)

---

A classe ZLX\\Cache traz uma forma elegante de utilizar cache na aplicação, facilitando a implementação de sistemas de Cache em sua aplicação. Com esta classe é possível criar várias instâncias separadas de Cache para sua aplicação, sem forçar que sua aplicação se restrinja a apenas uma implementação de cache. Você poderá alterar ou criar engines de cache com sua própria lógica, sobre-escrevendo a classe CacheEngine. Também pode apagar dados de várias instâncias de uma só vez, através dos namespaces atribuídos às instâncias!

### Instalação

[](#instalação)

---

É possível instalar o ZLX\\Cache através do Composer:

```
composer require aledefreitas/zlx_cache

```

### Requerimentos

[](#requerimentos)

---

- ***PHP 7.0+***

### Pre-built Engines

[](#pre-built-engines)

---

- ***Redis***
- ***Memcached***
- ***Memcache***

### Modo de uso

[](#modo-de-uso)

---

Abaixo citaremos as funções que são utilizadas no gerenciamento do cache na sua aplicação. Primeiramente, iniciamos o Cache, no início de seu código de inicialização da aplicação:

```
 	use ZLX\Cache\Cache;
	$config = [ 'prefix' => 'cache_prefix',
				'instances' => [
					// Utilizamos default, pois é a configuração padrão do cache
					'default' => [	'engine' => 'memcached',
									'duration' => '+10 minutes',
									'groups' => [ 'Posts', 'Comments', 'Session' ],
									'prevent_clear' => [ 'Session' ] ]
				]
			];
	// Iniciamos o cache
 	Cache::init($config);
```

#### Atenção!

[](#atenção)

Tenha muita atenção ao setar a configuração 'prefix' na inicialização do Cache. Ela é o prefixo para as entradas de cache de seu site, e não deve ser duplicada com nenhum outro prefixo igual em qualquer outro site no servidor inteiro.

#### Criando instâncias on-the-fly (em tempo de execução)

[](#criando-instâncias-on-the-fly-em-tempo-de-execução)

Podemos criar instancias novas programáticamente em tempo de execução com a função `Cache::create()`:

```
 	use ZLX\Cache\Cache;
	$config = [	'engine' => 'memcached',
				'duration' => '+10 minutes',
				'groups' => [ 'Posts', 'Comments', 'Session' ],
				'prevent_clear' => [ 'Session' ]
			];

 	Cache::create('meu_cache', $config);
```

#### Atributos das instâncias:

[](#atributos-das-instâncias)

- 'engine': É o Engine a ser utilizado. Ex.: 'memcached'
- 'duration': Duração das chaves de cache. Ex.: '+40 minutes'
- 'prefix': Prefixo da instância. Ex.: 'prefixo\_zlx'
- 'namespaces': Array contendo os namespaces ao qual a instância pertence. Ex.: \[ 'Posts', 'Admin' \]
- 'groups': Array contendo os grupos da instância. Ex.: \[ 'Comments', 'Session', 'Users' \]
- 'prevent\_clear': Array contendo os grupos que são ignorados quando o método clear(false)

Após inicializado, poderemos utilizar todas suas funcionalidades:

#### Atenção!

[](#atenção-1)

Todas as funções tem como padrão a instância 'default'. Caso seja omitido este parâmetro, a instância utilizada será a 'default'. Você pode especificar o parametro para utilizar outra instância.

#### set(key, value \[, instance = 'default')

[](#setkey-value--instance--default)

Salva uma chave e seu valor no cache. Retorna `(boolean)` com true quando foi salvo com sucesso, e false quando não foi salvo com sucesso.

```
		Cache::set('chave', 'teste de valor', 'default');
```

#### get(key \[, instance = 'default')

[](#getkey--instance--default)

Retorna o valor de uma chave do cache. Retorna `(boolean) false` caso não seja encontrado nada.

```
		Cache::get('chave', 'default');
```

#### delete(key \[, instance = 'default')

[](#deletekey--instance--default)

Apaga o valor de uma chave do cache. Retorna `(boolean)` com true caso delete, e false caso não delete.

```
		Cache::delete('chave', 'default');
```

#### remember(key, callable \[, instance = 'default')

[](#rememberkey-callable--instance--default)

Pesquisa o valor da chave requisitado, caso o mesmo não exista, executa a função `callable` e salva na chave requisitada (e retorna) seu retorno.

```
		Cache::remember('chave', function() {
 		// Inclua sua lógica aqui
 		return $retorno;
		}, 'default');
```

#### clearGroup(group \[, instance = 'default')

[](#cleargroupgroup--instance--default)

Invalida todas as chaves de um grupo determinado na instancia escolhida

```
		Cache::clearGroup('Grupo', 'default');
```

#### clear(\[ ignore\_prevents = false \[, instance = 'default')

[](#clear-ignore_prevents--false--instance--default)

Apaga todas as entradas de cache da instancia. Caso ignore\_prevents seja setado como `true`, ignorará até os grupos em 'prevent\_clear'.

```
		Cache::clear(false, 'default');
```

#### clearNamespace(namespace)

[](#clearnamespacenamespace)

Invoca o método clear() de todas as instâncias sob o namespace escolhido

```
		Cache::clearNamespace('Namespace');
```

### Funcionamento dos Grupos de Cache

[](#funcionamento-dos-grupos-de-cache)

---

A funcionalidade de grupos de Cache no ZLX\\Cache é interessante para invalidar/resetar apenas entradas de cache em um grupo específico. Suponhamos que em determinado momento da sua lógica, você cria uma entrada de Cache sob o grupo 'Posts', para guardar os dados de uma postagem específica:

```
		Cache::set("Posts.data.".$id_post, [ "title" => "Meus dados do post", "body" => "Corpo do meu post" ]);
```

Ao utilizar o padrão 'Grupo.chave' para salvar, deletar, ou retornar uma chave (***set()***,**get()***,**delete()***,**remember()**\*), caso o grupo esteja no array de grupos da sua instância, ele será salvo sob este grupo.

Ao invocar o método**clearGroup()**\*, invalidamos todas as chaves sob este grupo, de forma que na próxima requisição de qualquer chave deste grupo, ela não será encontrada no cache, e portanto será renovada!

### Funcionamento dos Namespaces

[](#funcionamento-dos-namespaces)

---

É muito parecido com o funcionamento de grupos, porém funciona num escopo acima dos grupos. Os grupos pertencem à instancia, e as instâncias pertencem aos namespaces. Quando o método**clearNamespace()**\* for invocado, ele irá executar um clear (***ignorando os prevents***) em todas as instâncias pertencentes ao namespace a ser resetado.

### Criando e utilizando uma Engine personalizada

[](#criando-e-utilizando-uma-engine-personalizada)

---

O ZLX\\Cache permite que sejam criadas Engines personalizadas para que possa-se desenvolver as lógicas necessárias do programador através de abstração da classe ZLX\\Cache\\CacheEngine!

Abaixo segue o exemplo de uma classe personalizada:

```
use ZLX\Cache\CacheEngine;

	class CustomCacheEngine extends CacheEngine {
	public $_defaultConfigs; // Configurações padrões

	public function __construct(array $config) {
		// Lógica do método construtor

		$this->_configs = array_merge($this->_defaultConfigs, $config); // Merge das configurações padrões. É necessário caso haja configurações padrões.
		parent::__construct($config);
	}

	public function set($key, $value, $custom_ttl = false) {
		// Lógica de salvamento de valores no cache
	}

	public function get($key) {
		// Lógica de busca de valores no cache
	}

	public function delete($key) {
		// Lógica de apagamento de valor no cache
	}

	public function clear($ignore_prevents) {
		// Lógica para reset do cache
	}

	public function add($key, $value, $ttl = 3) {
		// Lógica para add no cache
	}
}
```

Então, será possível adicionar instâncias desta classe de duas maneiras diferentes:

```
	// Através da inicialização do Cache
 	use ZLX\Cache\Cache;
	$config = [ 'prefix' => 'cache_prefix',
				'instances' => [
					'meu_cache' => [	'engine' => 'CustomCacheEngine',
										'duration' => '+10 minutes',
										'groups' => [ 'Posts', 'Comments', 'Session' ],
										'prevent_clear' => [ 'Session' ] ]
				]
			];

 	Cache::init($config);
```

```
	// Através da inicialização do Cache
 	use ZLX\Cache\Cache;
	$config = [	'engine' => 'CustomCacheEngine',
				'duration' => '+10 minutes',
				'groups' => [ 'Posts', 'Comments', 'Session' ],
				'prevent_clear' => [ 'Session' ]
			];

 	Cache::create('meu_cache', $config);
```

Desta forma, você pode criar engines que utilizam a lógica que for necessária implementada.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~61 days

Recently: every ~130 days

Total

34

Last Release

1754d ago

Major Versions

1.2.4 → 2.x-dev2017-10-12

PHP version history (2 changes)1.0.0PHP &gt;=5.6

1.3.0PHP &gt;=7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/705a2ea6121b404e6ca9163a8edb27f9d89c9d9ba27486c591fa1224a7a345cf?d=identicon)[aledefreitas](/maintainers/aledefreitas)

---

Top Contributors

[![aledefreitas](https://avatars.githubusercontent.com/u/3765557?v=4)](https://github.com/aledefreitas "aledefreitas (76 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/aledefreitas-zlx-cache/health.svg)

```
[![Health](https://phpackages.com/badges/aledefreitas-zlx-cache/health.svg)](https://phpackages.com/packages/aledefreitas-zlx-cache)
```

###  Alternatives

[predis/predis

A flexible and feature-complete Redis/Valkey client for PHP.

7.8k305.7M2.4k](/packages/predis-predis)[snc/redis-bundle

A Redis bundle for Symfony

1.0k39.4M67](/packages/snc-redis-bundle)[react/cache

Async, Promise-based cache interface for ReactPHP

444112.4M40](/packages/react-cache)[wp-media/wp-rocket

Performance optimization plugin for WordPress

7431.3M3](/packages/wp-media-wp-rocket)[illuminate/cache

The Illuminate Cache package.

12835.6M1.4k](/packages/illuminate-cache)[colinmollenhour/php-redis-session-abstract

A Redis-based session handler with optimistic locking

6325.6M14](/packages/colinmollenhour-php-redis-session-abstract)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
