Cache drivers help store data temporarily to make your app faster. They save information so your app doesn't have to do the same work again and again.
Cache drivers (file, Redis, Memcached) in Laravel
Start learning this pattern below
Jump into concepts and practice - no test required
Cache::driver('driver_name')->put('key', 'value', now()->addSeconds($seconds)); Cache::driver('driver_name')->get('key');
Replace 'driver_name' with 'file', 'redis', or 'memcached' depending on your setup.
The put method saves data with a key and expiration time as a DateTime or DateInterval instance.
Cache::driver('file')->put('username', 'Alice', now()->addSeconds(3600)); $username = Cache::driver('file')->get('username');
Cache::driver('redis')->put('count', 10, now()->addSeconds(600)); $count = Cache::driver('redis')->get('count');
Cache::driver('memcached')->put('settings', ['theme' => 'dark'], now()->addSeconds(1800)); $settings = Cache::driver('memcached')->get('settings');
This example stores a greeting message in the file cache for 5 minutes and then retrieves and prints it.
<?php use Illuminate\Support\Facades\Cache; // Store a value in file cache for 5 minutes Cache::driver('file')->put('greeting', 'Hello, Laravel!', now()->addSeconds(300)); // Retrieve the cached value $message = Cache::driver('file')->get('greeting'); // Output the message echo $message;
File cache stores data on your server's disk and is simple to use but slower than Redis or Memcached.
Redis and Memcached are in-memory caches, so they are faster and good for shared or large-scale apps.
Make sure Redis or Memcached servers are installed and running before using their drivers.
Cache drivers let you save and get data quickly to speed up your app.
Use 'file' for simple local caching, 'redis' or 'memcached' for faster, shared caching.
Always set how long cached data should live to keep it fresh.
Practice
Solution
Step 1: Understand cache driver types in Laravel
Laravel supports multiple cache drivers like file, redis, memcached, and database.Step 2: Identify the driver that uses local files
The 'file' driver stores cache data as files on the local server's disk.Final Answer:
file -> Option BQuick Check:
Local file storage = file [OK]
- Confusing Redis or Memcached as file storage
- Thinking database driver stores files
- Assuming 'file' driver is remote cache
config/cache.php file?Solution
Step 1: Locate the cache driver setting in config/cache.php
The main cache driver is set by the 'default' key in the config array.Step 2: Confirm correct syntax for Redis driver
Setting 'default' => 'redis' tells Laravel to use Redis as the cache driver.Final Answer:
'default' => 'redis' -> Option AQuick Check:
Default key sets cache driver = 'default' [OK]
- Using 'driver' instead of 'default' key
- Writing 'cache_driver' which is invalid
- Confusing config keys with environment variables
Cache::put('user_1', 'Alice', 3600);
$name = Cache::get('user_1');What will be the value of
$name immediately after this code runs?Solution
Step 1: Understand Cache::put usage
Cache::put stores the value 'Alice' with key 'user_1' for 3600 seconds (1 hour).Step 2: Retrieve cached value with Cache::get
Cache::get('user_1') returns the stored value 'Alice' if it exists and is not expired.Final Answer:
"Alice" -> Option AQuick Check:
Cache get returns stored value = "Alice" [OK]
- Expecting key name instead of value
- Confusing expiration time as returned value
- Assuming null because of Redis driver
config/cache.php?'memcached' => [
'driver' => 'memcached',
'servers' => [
['host' => '127.0.0.1', 'port' => 11211],
],
],
Why might this cause an error?
Solution
Step 1: Check Memcached server config requirements
Laravel expects each Memcached server array to include 'host', 'port', and 'weight' keys.Step 2: Identify missing 'weight' key
The given config lacks the 'weight' key, which can cause errors when connecting to Memcached.Final Answer:
Missing 'weight' key in the server array -> Option CQuick Check:
Memcached servers need 'weight' key [OK]
- Assuming port 11211 is wrong (it's default)
- Confusing driver name with 'memcache'
- Thinking host IP must be 'localhost'
Solution
Step 1: Understand Cache::put expiration parameter
Laravel's Cache::put accepts expiration as an integer number of minutes, or a Carbon/DateTime instance.Step 2: Use now()->addMinutes(10) for 10 minutes expiration
Passing now()->addMinutes(10) sets expiration 10 minutes from current time correctly.Step 3: Analyze other options
A uses 600 (600 minutes = 10 hours), too long; C uses 5 minutes, too short; D uses now()->addSeconds(300) (5 minutes), too short.Final Answer:
Cache::put('profile_123', $profileData, now()->addMinutes(10)); -> Option DQuick Check:
Use now()->addMinutes(10) for 10 min cache [OK]
- Using 600 which is 600 minutes (10 hours)
- Using small integer 5 (5 minutes)
- Using addSeconds(300) which is 5 minutes
