PHPackages                             olegkravec/expirable - 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. [Database &amp; ORM](/categories/database)
4. /
5. olegkravec/expirable

ActiveLibrary[Database &amp; ORM](/categories/database)

olegkravec/expirable
====================

Laravel Model Caching with truly expiring. :)

1.3.1(5y ago)353MITPHPPHP &gt;=5.4.0

Since Sep 9Pushed 5y ago2 watchersCompare

[ Source](https://github.com/Olegkravec/expirable)[ Packagist](https://packagist.org/packages/olegkravec/expirable)[ RSS](/packages/olegkravec-expirable/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (6)Dependencies (2)Versions (8)Used By (0)

Expirable Laravel Model Caching
===============================

[](#expirable-laravel-model-caching)

Предыстория
-----------

[](#предыстория)

Разрабатывая проекты, где большое внимание приделяется слову Highload - я начал изучать реализацию кэш библиотек изнутри, так как я увидел множество ненужных кэш-запросов в Redis используя существующие библиотеки. Например, изучив **watson/rememberable** и **genealabs/laravel-model-caching** увидел помимо данных такие ключи для каждого запроса: ...-cooldown:saved-at, ...:invalidated-at, ...:seconds, ...:saved-at, ...:invalidated-at, ...:seconds. Эти данные используются для инвалидации самого кэша, но создают много лишних оперций для сервера PHP, и это, как я сказал помимо самых данных, которые хранятся не как положено в Key-Value парах(SET-GET), а в промежуточных буферах(SADD, SMEMBERS) что дополнительно расходует память и заставляет делать много запросов на Redis, сравнивать временные метки, и удалять что-то когда время вышло.

Моей же задачей стояло создать такую систему которая бы создавала максимально мало дополнительной нагрузки, за счёт использования всех возможностей сервера Redis - чего я и добился.

Использования
-------------

[](#использования)

### Установка

[](#установка)

Библеотека доступна в репозиториях composer'а: `composer require olegkravec/expirable`

### Включение кэширования

[](#включение-кэширования)

Для удобства использования я включил по-умолчанию кэширование как-только вы подключите трейт в свою модель **use Expirable;**

```
