first commit
This commit is contained in:
62
README.md
Normal file
62
README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# DB Memory Cache for PrestaShop
|
||||
|
||||
A high-performance caching module for PrestaShop 8 and 9 that utilizes the MySQL/MariaDB `MEMORY` (HEAP) engine. This module provides a fast, ephemeral key-value store directly in RAM without requiring external services like Redis or Memcached.
|
||||
|
||||
## Features
|
||||
|
||||
* **Speed:** Uses the `MEMORY` database engine to store data in RAM, avoiding disk I/O.
|
||||
* **TTL Support:** Simulates Time-To-Live expiration for cached items.
|
||||
* **Unicode Optimized:** Uses `JSON_UNESCAPED_UNICODE` to save space and support multi-byte characters efficiently.
|
||||
* **Safety:** Automatically rejects data larger than the defined limit (~16KB) to prevent SQL errors or JSON truncation.
|
||||
* **Strict Logic:** Ensures clean writes by deleting existing keys before insertion.
|
||||
|
||||
## Requirements
|
||||
|
||||
* PrestaShop 8.0.0 or higher (Compatible with PS 9).
|
||||
* MySQL or MariaDB.
|
||||
* The database user must have `CREATE` and `DROP` privileges (standard for PS).
|
||||
|
||||
## Installation
|
||||
|
||||
1. Create a folder named `dbmemorycache` in your PrestaShop `modules/` directory.
|
||||
2. Upload `dbmemorycache.php` and `logo.png` (optional) to that folder.
|
||||
3. Go to **Back Office > Modules > Module Manager**.
|
||||
4. Search for "MySQL Memory Cache Optimized".
|
||||
5. Click **Install**.
|
||||
|
||||
## Technical Limitations
|
||||
|
||||
* **Volatility:** Data stored in `MEMORY` tables is lost if the MySQL server restarts. Do not use this for persistent data.
|
||||
* **Size Limit:** The maximum value size is approximately **16,000 characters** (due to `VARCHAR` limits in MEMORY tables and `utf8mb4` encoding). If you attempt to cache data larger than this, the `set()` method will return `false` and the data will not be cached.
|
||||
|
||||
## Usage Examples
|
||||
|
||||
You can call this module from any other module, controller, or hook in PrestaShop.
|
||||
|
||||
### 1. Basic Usage (Get & Set)
|
||||
|
||||
```php
|
||||
// 1. Get the module instance
|
||||
$cache = Module::getInstanceByName('dbmemorycache');
|
||||
|
||||
// Ensure module is installed and active
|
||||
if ($cache && Module::isInstalled('dbmemorycache')) {
|
||||
$key = 'my_custom_api_data_v1';
|
||||
|
||||
// 2. Check if data exists and is valid (not expired)
|
||||
if ($cache->existsValue($key)) {
|
||||
$data = $cache->getValue($key);
|
||||
// $data is now your array/object
|
||||
} else {
|
||||
// 3. Fetch your expensive data
|
||||
$data = [
|
||||
'id' => 123,
|
||||
'name' => 'Product Name',
|
||||
'features' => ['A', 'B', 'C']
|
||||
];
|
||||
|
||||
// 4. Store in cache for 1 hour (3600 seconds)
|
||||
// Returns true on success, false if data is too big
|
||||
$cache->setValue($key, $data, 3600);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user