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

ActiveLibrary[Caching](/categories/caching)

ecomdev/cache-key
=================

Library that allows you to generate cache keys based on various data formats.

1.1.0(10y ago)11106.7k↓72.9%2MITPHPPHP ^5.6|&gt;=7.0

Since May 5Pushed 10y agoCompare

[ Source](https://github.com/EcomDev/cache-key)[ Packagist](https://packagist.org/packages/ecomdev/cache-key)[ RSS](/packages/ecomdev-cache-key/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (2)Dependencies (7)Versions (3)Used By (2)

Cache Key [![Build Status](https://camo.githubusercontent.com/90eb35952887700eb56ebfda65b2b301baf44a7ffe4fe3d4577e1d39ed14ffec/68747470733a2f2f7472617669732d63692e6f72672f45636f6d4465762f63616368652d6b65792e737667)](https://travis-ci.org/EcomDev/cache-key) [![Coverage Status](https://camo.githubusercontent.com/448c78e75a4a4f2e2dda92af2423085d7580948eae709a76b681d7bc20ef9c94/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f45636f6d4465762f63616368652d6b65792f62616467652e7376673f6272616e63683d646576656c6f70)](https://coveralls.io/github/EcomDev/cache-key?branch=develop)
=================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#cache-key---)

Library that allows you to generate cache keys based on various data formats.

Main components:

- **Key generator** Allows to generate a cache key based on different data input
- **Key converters** Allows to convert various php data types into key friendly data type
- **Key normalizer** Normalizes characters in generated string to match particular cache key sanity checks of your own cache adapter.

Installation
------------

[](#installation)

```
composer require ecomdev/cache-key
```

Usage
-----

[](#usage)

### Automatic non alpha-num characters encoding

[](#automatic-non-alpha-num-characters-encoding)

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Generator;

$generator = new Generator(new EncodeNormalizer());
$generator->generate('some_bad_#^.;:/\\_character'); // Generates "some_bad_235e2e3b3a2f5c_character"
```

### Multiple normalizers

[](#multiple-normalizers)

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Normalizer\LengthNormalizer;
use EcomDev\CacheKey\NormalizerChain;
use EcomDev\CacheKey\Generator;

$normalizer = new NormalizerChain([
    new EncodeNormalizer(),
    new LengthNormalizer(16)
]);

$generator = new Generator($normalizer);
$generator->generate('some_bad_#^.;:/\\_character'); // Generates "some_bad_235e2e3b3a2f5c_character"
```

### Using converter for key value map

[](#using-converter-for-key-value-map)

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Converter\KeyValueConverter;
use EcomDev\CacheKey\Converter\ScalarConverter;
use EcomDev\CacheKey\Generator;

$generator = new Generator(
    new EncodeNormalizer(),
    new KeyValueConverter(new ScalarConverter())
);

$generator->generate([
    'some-key' => 'some-value',
    'another-key' => 'another-value'
]); // Generates "some-key_some-value_another-key_another-value"
```

### Cache Key Info Provider Usage

[](#cache-key-info-provider-usage)

Your custom cache able model

```
class YourCustomModel implements EcomDev\CacheKey\InfoProviderInterface
{
    public function getCacheKeyInfo()
    {
        return [
            'some-key' => 'some-value',
            'another-key' => 'another-value'
        ];
    }
}
```

Usage in key generation

```
use EcomDev\CacheKey\Normalizer\EncodeNormalizer;
use EcomDev\CacheKey\Converter\KeyValueConverter;
use EcomDev\CacheKey\Converter\ScalarConverter;
use EcomDev\CacheKey\Generator;

$object = new YourCustomModel();

$generator = new Generator(
    new EncodeNormalizer(),
    new KeyValueConverter(new ScalarConverter())
);

$generator->generate($object); // Generates "some-key_some-value_another-key_another-value"
```

### PSR-6 compatible key generation

[](#psr-6-compatible-key-generation)

```
use EcomDev\CacheKey\Normalizer\Psr6Normalizer;
use EcomDev\CacheKey\Generator;

$generator = new Generator(Psr6Normalizer::create());
$generator->generate('give_me-psr-6-compatible_#^.;:/\\-key'); // Generates "give_me-psr-6-compatible_235e.3b3a2f5c-key"
```

### Prefixed Key Generation

[](#prefixed-key-generation)

```
use EcomDev\CacheKey\Normalizer\Psr6Normalizer;
use EcomDev\CacheKey\Generator;

$generator = new Generator(Psr6Normalizer::create(), null, 'prefix-');
$generator->generate('some-non-prefixed-key'); // Generates "prefix-some-non-prefixed-key"
```

Contribution
------------

[](#contribution)

Make a pull request based on develop branch

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 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 ~14 days

Total

2

Last Release

3741d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/190d12eae43e0d874394cbc7fc49ea94c6b6e1bc8b05f75b94fbd0b9c4b5d15f?d=identicon)[IvanChepurnyi](/maintainers/IvanChepurnyi)

---

Top Contributors

[![IvanChepurnyi](https://avatars.githubusercontent.com/u/866758?v=4)](https://github.com/IvanChepurnyi "IvanChepurnyi (10 commits)")

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

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

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

###  Alternatives

[iazaran/smart-cache

Smart Cache is a caching optimization package designed to enhance the way your Laravel application handles data caching. It intelligently manages large data sets by compressing, chunking, or applying other optimization strategies to keep your application performant and efficient.

21114.2k](/packages/iazaran-smart-cache)[phpfastcache/phpssdb

PHP SSDB Driver for phpFastCache

14736.9k1](/packages/phpfastcache-phpssdb)[rapidwebltd/rw-file-cache

RW File Cache is a PHP File-based Caching Library. Its syntax is designed to closely resemble the PHP memcache extension.

15196.8k7](/packages/rapidwebltd-rw-file-cache)[yuzuru-s/redis-recommend

Wrapping Redis's sorted set APIs for specializing recommending operations.

392.9k](/packages/yuzuru-s-redis-recommend)[ichhabrecht/intcache

Turn uncachable page objects into cacheable links

193.9k](/packages/ichhabrecht-intcache)

PHPackages © 2026

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