yiisoft / cache-db
Yii Caching Library - DB Handler
Fund package maintenance!
Opencollective
yiisoft
Installs: 2 647
Dependents: 0
Suggesters: 1
Security: 0
Stars: 12
Watchers: 19
Forks: 8
Open Issues: 2
Requires
- php: ^8.0
- ext-pdo: *
- psr/log: ^2.0|^3.0
- psr/simple-cache: ^2.0|^3.0
- yiisoft/db: ^1.0
Requires (Dev)
- maglnet/composer-require-checker: ^4.2
- phpunit/phpunit: ^9.6|^10.1
- rector/rector: ^0.16.0
- roave/infection-static-analysis-plugin: ^1.25|^1.30
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.8|^5.8
- yiisoft/cache: ^3.0
- yiisoft/log: ^2.0
Suggests
- yiisoft/log: ^2.0
Provides
This package is auto-updated.
Last update: 2024-11-16 08:12:43 UTC
README
Yii Cache Library - DB Handler
This package implements database-based PSR-16 cache.
Supported databases
Requirements
- PHP 8.0 or higher.
PDO
PHP extension.
Installation
The package could be installed with Composer:
composer require yiisoft/cache-db
Create database connection
For more information see yiisoft/db.
Database Preparing
Package provides two way for preparing database:
-
Raw SQL. You can use it with the migration package used in your application.
-
Ensure tables:
-
Ensure no tables:
-
-
DbSchemaManager
forensureTable()
,ensureNoTable()
methods for cache table (by default{{%yii_cache}}
).
// Create db schema manager $dbSchemaManager = new DbSchemaManager($db); // Ensure table with default name $dbSchemaManager->ensureTable(); // Ensure table with custom name $dbSchemaManager->ensureTable('{{%custom_cache_table}}'); // Ensure no table with default name $dbSchemaManager->ensureNoTable(); // Ensure no table with custom name $dbSchemaManager->ensureNoTable('{{%custom_cache_table}}');
Configuration
When creating an instance of \Yiisoft\Cache\Db\DbCache
, you must pass an instance of the database connection.
$cache = new \Yiisoft\Cache\Db\DbCache($db, $table, $gcProbability);
$db (\Yiisoft\Db\Connection\ConnectionInterface)
- The database connection instance.$table (string)
- The name of the database table to store the cache data. Defaults to "cache".$gcProbability (int)
- The probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. Defaults to 100, meaning 0.01% chance. This number should be between 0 and 1000000. A value 0 meaning no GC will be performed at all.
General usage
The package does not contain any additional functionality for interacting with the cache, except those defined in the PSR-16 interface.
$cache = new \Yiisoft\Cache\Db\DbCache($db); $parameters = ['user_id' => 42]; $key = 'demo'; // try retrieving $data from cache $data = $cache->get($key); if ($data === null) { // $data is not found in cache, calculate it from scratch $data = calculateData($parameters); // store $data in cache for an hour so that it can be retrieved next time $cache->set($key, $data, 3600); } // $data is available here
In order to delete value you can use:
$cache->delete($key); // Or all cache $cache->clear();
To work with values in a more efficient manner, batch operations should be used:
getMultiple()
setMultiple()
deleteMultiple()
This package can be used as a cache handler for the Yii Caching Library.
Additional logging
In order to log details about failures you may set a logger instance. It should be Psr\Log\LoggerInterface::class
. For example, you can use yiisoft\Log:
$cache = new \Yiisoft\Cache\Db\DbCache($db, $table, $gcProbability); $cache->setLogger(new \Yiisoft\Log\Logger());
This allows you to log cache operations, when ocurring errors, etc.
Documentation
If you need help or have a question, the Yii Forum is a good place for that. You may also check out other Yii Community Resources.
License
The Yii Cache Library - DB Handler is free software. It is released under the terms of the BSD License.
Please see LICENSE
for more information.
Maintained by Yii Software.