-
-
Notifications
You must be signed in to change notification settings - Fork 453
Home
More information at http://www.phpfastcache.com One Class uses for All Cache. You don't need to rewrite your code many times again.
Regular drivers | High performances drivers | Development driver |
---|---|---|
Apc(u) |
CouchBase |
Devnull |
Cookie |
Mongodb |
Devfalse |
Files |
Predis |
Devtrue |
Leveldb |
Redis |
|
Memcache(d) |
Ssdb |
|
Sqlite |
||
Wincache |
||
Xcache |
* Driver descriptions available in DOCS/DRIVERS.md
Starting of the v5, phpFastCache comes with a Symfony Bundle. He's fresh, so feel free to report any bug or contribute to the code using pull requests.
phpFastCache is not a traditional caching method which is keep read and write to files, sqlite or mass connections to memcache, redis, mongodb... phpFastCache use my unique caching method. When you use Files, and Sqlite, I am guarantee you still can get fast speed almost like memcache & redis for sure. Also, when you use Memcache / Memcached, your miss hits will be reduce. Different with normal caching methods which shared everywhere on internet, phpFastCache Lib reduce the high I/O load, and faster than traditional caching method at least x7 - 10 times. However, some time you still want to use traditional caching, we support them too.
use phpFastCache\CacheManager;
CacheManager::getInstance('files', $config);
// An alternative exists:
CacheManager::Files($config);
Your website have 10,000 visitors who are online, and your dynamic page have to send 10,000 same queries to database on every page load. With phpFastCache, your page only send 1 query to DB, and use the cache to serve 9,999 other visitors.
phpFastCache offers you a lot of useful APIs:
- getKey() // Return the item identifier (key)
- get() // The getter, obviously, return your cache object
- set($value) // The setter, for those who missed it, put 0 meant cache it forever
- expiresAfter($ttl) // Allow you to extends the lifetime of an entry without altering the value (formerly know as touch())
- expiresAt($expiration) // Sets the expiration time for this cache item (as a DateTimeInterface object)
- increment($step = 1) // For integer that we can count on
- decrement($step = 1) // Redundant joke...
- append($data) // Append data to a string or an array (push)
- prepend($data) // Prepend data to a string or an array (unshift)
- isHit() // Check if your cache entry exists and is still valid, it is the equivalent of isset()
- isExpired() // Check if your cache entry is expired
- getTtl() // Get the remaining Time To Live as an integer
- getExpirationDate() // Get the expiration date as a Datetime object
- addTag($tagName) // Add a tag
- addTags(array $tagNames) // Add many tags
- setTags(array $tags) // Set some tags
- getTags() // Get the tags
- getTagsAsString($separator = ', ') // Get the data a string separated by $separator
- removeTag($tagName) // Remove a tag
- removeTags(array $tagNames) // Remove some tags
- getDataAsJsonString($option = 0, $depth = 512)// Return the data as a well-formatted json string
- getItem($key) // Retrieve an item and returns an empty item if not found
- getItems(array $keys) // Retrieve one or more item and returns an array of items
- hasItem($key) // Tests if an item exists
- deleteItem($key) // Delete an item
- deleteItems(array $keys) // Delete one or more items
- save(CacheItemInterface $item) // Persists a cache item immediately
- saveDeferred(CacheItemInterface $item); // Sets a cache item to be persisted later
- commit(); // Persists any deferred cache items
- clear() // Allow you to completely empty the cache and restart from the beginning
- getStats() // Return the cache statistics as an object, useful for checking disk space used by the cache etc.
- getItemsByTag($tagName) // Return items by a tag
- getItemsByTags(array $tagNames) // Return items by some tags
- deleteItemsByTag($tagName) // Delete items by a tag
- deleteItemsByTags(array $tagNames) // Delete items by some tags
- incrementItemsByTag($tagName, $step = 1) // Increment items by a tag
- incrementItemsByTags(array $tagNames, $step = 1) // Increment items by some tags
- decrementItemsByTag($tagName, $step = 1) // Decrement items by a tag
- decrementItemsByTags(array $tagNames, $step = 1) // Decrement items by some tags
- appendItemsByTag($tagName, $data) // Append items by a tag
- appendItemsByTags(array $tagNames, $data) // Append items by some tags
- prependItemsByTag($tagName, $data) // Prepend items by a tag
- prependItemsByTags(array $tagNames, $data) // Prepend items by some tags
Also support Multiple calls, Tagging, Setup Folder for caching. Look at our examples folders.
composer require phpFastCache/phpFastCache
use phpFastCache\CacheManager;
// Setup File Path on your config files
CacheManager::setup(array(
"path" => '/var/www/phpfastcache.com/dev/tmp', // or in windows "C:/tmp/"
));
// In your class, function, you can call the Cache
$InstanceCache = CacheManager::getInstance('files');
/**
* Try to get $products from Caching First
* product_page is "identity keyword";
*/
$key = "product_page";
$CachedString = $InstanceCache->getItem($key);
$your_product_data = [
'First product',
'Second product',
'Third product'
// etc...
];
if (is_null($CachedString->get())) {
$CachedString->set($your_product_data)->expiresAfter(5);//in seconds, also accepts Datetime
$InstanceCache->save($CachedString); // Save the cache item just like you do with doctrine and entities
echo "FIRST LOAD // WROTE OBJECT TO CACHE // RELOAD THE PAGE AND SEE // ";
echo $CachedString->get();
} else {
echo "READ FROM CACHE // ";
echo $CachedString->get()[0];// Will prints 'First product'
}
/**
* use your products here or return it;
*/
echo implode('<br />', $CachedString->get());// Will echo your product list
- See the file examples/legacy.php for more information.
For curious developpers, there is a lot of others available examples here.
Found an issue or had an idea ? Come here here and let us know !
❓ Finally, if you need help, always check out the inevitable README.md