PHPackages                             uspdev/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. uspdev/cache

ActiveLibrary[Caching](/categories/caching)

uspdev/cache
============

Library to connect to cache server

1.0.0(5y ago)24.5k↑133.3%3[1 PRs](https://github.com/uspdev/cache/pulls)2GPL-3.0-or-laterPHPPHP &gt;=7.0

Since Aug 4Pushed 2y ago9 watchersCompare

[ Source](https://github.com/uspdev/cache)[ Packagist](https://packagist.org/packages/uspdev/cache)[ Docs](https://github.com/uspdev/cache)[ RSS](/packages/uspdev-cache/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (16)Used By (2)

Cache
=====

[](#cache)

Biblioteca que cacheia resultados de métodos, geralmente consultas a banco de dados. Esta biblioteca funciona como um conector para o backend memcached. O servidor roda na máquina local.

Pode ser usado em métodos de classes instanciadas e em métodos estáticos.

Os dados ficam guardados no cache em função dos parâmetros passados para o método. Mudando um parâmetro é feito um novo cache.

Por padrão os caches expiram depois de 4 horas ou reiniciando o servidor memcached.

Por padrão dados menores que 32 bytes não serão cacheados.

Requisitos
----------

[](#requisitos)

- PHP &gt; 7.0
- memcached
- php-memcached

Instalação e configuração
-------------------------

[](#instalação-e-configuração)

### Instalação do servidor memcached

[](#instalação-do-servidor-memcached)

- No ubuntu 1804, debian 9, debian 10: para instalar o memcached use `apt install memcached`
- Acrescente no `/etc/memcached.conf` a linha `I = 5M` para aumentar para 5MB o tamanho de cada objeto ou outro valor que achar conveniente
- O memcached (no ubuntu) vem configurado para utilizar cerca de 64MB de RAM (não é um limite rígido). Caso seu servidor suporte e tenha demanda, mude no arquivo de configuração `-m 128` para dobrar o valor padrão
- Reinicie o serviço `service memcached restart`

OBS.: Ferramentas para linha de comando podem ser obtidas no pacote libmemcached-tools.

### Instalação da biblioteca

[](#instalação-da-biblioteca)

- Para ubuntu 1804, debian 9 ou debian 10 use `apt install php-memcached`
- reinicie o apache `service apache2 reload`
- Coloque a biblioteca como dependência `composer require uspdev/cache`

Utilização
----------

[](#utilização)

### Objetos instanciados

[](#objetos-instanciados)

Caso típico de uma consulta ao BD:

```
$pessoa = new Pessoa();
$lista = $pessoa->lista('nome');
```

Usando o cache, a consulta fica assim:

```
use Uspdev\Cache\Cache;

$pessoa = new Pessoa();
$cache = new Cache($pessoa);
$lista = $cache->getCached('lista',['nome']);
```

ou

```
$lista = $cache->getCached('lista','nome');
```

Isso quer dizer que se o método pessoa-&gt;Lista() aceitar mais de um parâmetro você pode passar a lista de parâmetros como array que o cache vai transformar em uma lista de argumentos.

### Métodos estáticos

[](#métodos-estáticos)

Se o método for estático fica assim:

```
use Uspdev\Cache\Cache;

$cache = new Cache();
$lista = $cache->getCached('Pessoa::lista',['nome']);
```

### Outros métodos

[](#outros-métodos)

Para ver algumas informações úteis sobre o cache use

```
$status = $cache->status();
```

Caso sua aplicação tenha alterado o conteúdo de uma consulta cacheada, você deve invalidar o cache para não receber dados obsoletos.

```
$status = $cache->flush();
```

Testes
------

[](#testes)

Rode alguns testes para ver o funcionamento.

```
php test/runtests.php
```

Parâmetros de configuração
--------------------------

[](#parâmetros-de-configuração)

Se você não tem o servidor memcached disponível num projeto que utiliza cache, você pode desabilitar o cache completamente de forma a poder continuar usando o projeto.

Em ambiente de desenvolvimento também pode ser desejável ter o cache desabilitado.

Para desabilitar o cache, defina a variável de ambiente ou a constante abaixo.

```
putenv('USPDEV_CACHE_DISABLE=1');
```

ou

```
define('USPDEV_CACHE_DISABLE', true);
```

Dessa forma a biblioteca de cache vai fazer apenas um bypass das consultar que passarem por ela.

O uso de **variáveis de ambiente** será preferível ao invés de usar constantes, que poderá ser removido no futuro.

Para alterar o tempo de expiração há duas formas:

- por variável de ambiente (antes de instanciar):

```
putenv('USPDEV_CACHE_EXPIRY=tempo_em_segundos');
```

- setando diretamente (depois de instanciar):

```
$cache->expiry = tempo_em_segundos;
```

Se o tempo de expiração for 0, o cache nunca vai expirar.

Você pode definir a partir de qual tamanho de dados o cache vai ser utilizado. O valor padrão são 32 bytes para poder excluir retornos vazios e algumas mensagens de erro. Se quiser modificar esse tamanho use:

```
putenv('USPDEV_CACHE_SMALL=tamanho_em_bytes');
```

ou

```
$cache->small = tamanho_em_bytes;
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 91.3% 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 ~47 days

Recently: every ~95 days

Total

14

Last Release

1867d ago

Major Versions

0.7.2 → 1.0.02021-04-07

### Community

Maintainers

![](https://www.gravatar.com/avatar/8a59480189a3ba1aa8355cb434880695569433f5d1c9e375e8238d5ff1a56beb?d=identicon)[uspdev](/maintainers/uspdev)

---

Top Contributors

[![masakik](https://avatars.githubusercontent.com/u/986915?v=4)](https://github.com/masakik "masakik (42 commits)")[![thiagogomesverissimo](https://avatars.githubusercontent.com/u/908508?v=4)](https://github.com/thiagogomesverissimo "thiagogomesverissimo (4 commits)")

---

Tags

hacktoberfest

### Embed Badge

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

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

###  Alternatives

[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)[cheprasov/php-redis-client

Php client for Redis. It is a fast, fully-functional and user-friendly client for Redis, optimized for performance. RedisClient supports the latest versions of Redis starting from 2.6 to 6.0

1281.2M21](/packages/cheprasov-php-redis-client)[amphp/redis

Efficient asynchronous communication with Redis servers, enabling scalable and responsive data storage and retrieval.

165634.7k44](/packages/amphp-redis)

PHPackages © 2026

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