Deploy: 2026-05-23 00:24:51
This commit is contained in:
@@ -32,5 +32,7 @@ REDIS_ENABLED=false
|
|||||||
REDIS_HOST=127.0.0.1
|
REDIS_HOST=127.0.0.1
|
||||||
REDIS_PORT=6379
|
REDIS_PORT=6379
|
||||||
REDIS_PASSWORD=
|
REDIS_PASSWORD=
|
||||||
|
REDIS_DB=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ class Cache
|
|||||||
$host = Env::get('REDIS_HOST', '127.0.0.1');
|
$host = Env::get('REDIS_HOST', '127.0.0.1');
|
||||||
$port = (int)Env::get('REDIS_PORT', 6379);
|
$port = (int)Env::get('REDIS_PORT', 6379);
|
||||||
$password = Env::get('REDIS_PASSWORD', null);
|
$password = Env::get('REDIS_PASSWORD', null);
|
||||||
|
$db = (int)Env::get('REDIS_DB', 0);
|
||||||
|
|
||||||
// Connect with 1.0s timeout to prevent request blocking
|
// Connect with 1.0s timeout to prevent request blocking
|
||||||
$connected = $redis->connect($host, $port, 1.0);
|
$connected = $redis->connect($host, $port, 1.0);
|
||||||
@@ -43,10 +44,14 @@ class Cache
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($password)) {
|
if ($password !== null && $password !== '' && strtolower($password) !== 'null') {
|
||||||
$redis->auth($password);
|
$redis->auth($password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($db > 0) {
|
||||||
|
$redis->select($db);
|
||||||
|
}
|
||||||
|
|
||||||
self::$client = $redis;
|
self::$client = $redis;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
error_log('[Cache Error] Redis connection error: ' . $e->getMessage());
|
error_log('[Cache Error] Redis connection error: ' . $e->getMessage());
|
||||||
@@ -56,6 +61,14 @@ class Cache
|
|||||||
return self::$client;
|
return self::$client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper to get prefixed key
|
||||||
|
*/
|
||||||
|
private static function getPrefixedKey(string $key): string
|
||||||
|
{
|
||||||
|
return 'nabeh:' . $key;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve cache item by key.
|
* Retrieve cache item by key.
|
||||||
*/
|
*/
|
||||||
@@ -67,7 +80,8 @@ class Cache
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$value = $client->get($key);
|
$prefixedKey = self::getPrefixedKey($key);
|
||||||
|
$value = $client->get($prefixedKey);
|
||||||
return $value !== false ? json_decode($value, true) : null;
|
return $value !== false ? json_decode($value, true) : null;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
error_log('[Cache Error] Redis get failed: ' . $e->getMessage());
|
error_log('[Cache Error] Redis get failed: ' . $e->getMessage());
|
||||||
@@ -86,7 +100,8 @@ class Cache
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return $client->setex($key, $ttl, json_encode($value));
|
$prefixedKey = self::getPrefixedKey($key);
|
||||||
|
return $client->setex($prefixedKey, $ttl, json_encode($value));
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
error_log('[Cache Error] Redis set failed: ' . $e->getMessage());
|
error_log('[Cache Error] Redis set failed: ' . $e->getMessage());
|
||||||
return false;
|
return false;
|
||||||
@@ -104,7 +119,8 @@ class Cache
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return $client->del($key) > 0;
|
$prefixedKey = self::getPrefixedKey($key);
|
||||||
|
return $client->del($prefixedKey) > 0;
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
error_log('[Cache Error] Redis delete failed: ' . $e->getMessage());
|
error_log('[Cache Error] Redis delete failed: ' . $e->getMessage());
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -61,6 +61,23 @@ if (class_exists('\Redis')) {
|
|||||||
} else {
|
} else {
|
||||||
echo " ❌ Failed to get correct value from Redis.\n";
|
echo " ❌ Failed to get correct value from Redis.\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify prefixing using a direct native Redis connection
|
||||||
|
$nativeRedis = new \Redis();
|
||||||
|
try {
|
||||||
|
if ($nativeRedis->connect(Env::get('REDIS_HOST', '127.0.0.1'), (int)Env::get('REDIS_PORT', 6379), 1.0)) {
|
||||||
|
$nativeVal = $nativeRedis->get('nabeh:test_cache_key');
|
||||||
|
if ($nativeVal) {
|
||||||
|
echo " ✅ Verified Prefixing: Native Redis key 'nabeh:test_cache_key' exists and has value: " . $nativeVal . "\n";
|
||||||
|
} else {
|
||||||
|
echo " ❌ Prefixing test failed: key not found in native Redis.\n";
|
||||||
|
}
|
||||||
|
$nativeRedis->close();
|
||||||
|
}
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
echo " ℹ️ Native verification connection skipped/failed: " . $ex->getMessage() . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
Cache::delete('test_cache_key');
|
Cache::delete('test_cache_key');
|
||||||
} else {
|
} else {
|
||||||
echo " ℹ️ Redis server is not running or unreachable (Fallback triggered, test completed successfully).\n";
|
echo " ℹ️ Redis server is not running or unreachable (Fallback triggered, test completed successfully).\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user