snapflowio / cache
A simple and lightweight library caching data to multiple sources.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/snapflowio/cache
Requires
- php: >=8.0
- ext-json: *
- ext-memcached: *
- ext-redis: *
Requires (Dev)
- laravel/pint: *
README
A simple and lightweight library caching data to multiple sources.
Installation
composer require snapflow/cache
Quick Start
<?php use Snapflow\Cache\Cache; use Snapflow\Cache\Adapter\Memory; use Snapflow\Cache\Adapter\Redis; // Create cache instance with Memory adapter $cache = new Cache(new Memory()); // Save data to cache $cache->save('user:123', ['name' => 'John Doe', 'email' => 'john@example.com']); // Load from cache (TTL: 3600 seconds) $user = $cache->load('user:123', 3600); // Remember pattern: get from cache or execute callback $data = $cache->remember('expensive:query', 3600, function() { // This only runs if cache is empty return fetchExpensiveData(); }); // Batch operations $cache->saveMultiple([ 'user:1' => $user1, 'user:2' => $user2, 'user:3' => $user3, ]); $users = $cache->loadMultiple(['user:1', 'user:2', 'user:3'], 3600); // Atomic counters $cache->increment('page:views'); $views = $cache->increment('api:requests:' . $ip, 5); // Using Redis adapter $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $redisCache = new Cache(new \Snapflow\Cache\Adapter\Redis($redis)); // Tags support use Snapflow\Cache\TaggableCache; $cache = new TaggableCache(new Memory()); $cache->saveWithTags('post:1', $postData, ['posts', 'author:john'], 3600); $cache->flushByTag('author:john'); // Remove all posts by author
License
This library is available under the MIT License.
Copyright
Copyright (c) 2025 Snapflow