2026-03-04 15:51:02 +02:00
2026-03-04 15:51:02 +02:00
2026-03-04 14:10:12 +02:00
2026-03-04 15:51:02 +02:00
2026-03-04 14:10:12 +02:00

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)

// 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);
    }
}
Description
No description provided
Readme 33 KiB
Languages
PHP 82.8%
Smarty 17.2%