<?php
//安裝 phpredis 擴充套件
//sudo apt-get install php-redis
//xampp download radis: https://github.com/tporadowski/redis/releases

/*
// 連接 Redis
$redis = new Redis();
$redis->connect('192.168.10.119', 6379); // 指定 Redis 伺服器的 IP 和 Port
$redis->connect('127.0.0.1', 6379);
echo "Redis 伺服器連線成功！127.0.0.1";


// 設定快取的 Key 和到期時間（以秒為單位）
$cacheKey = 'example_cache_key';
$cacheTTL = 3600; // 1小時
//$redis->expire('name', 3600); // 设置 name 键的过期时间为 1 小时
// 嘗試從 Redis 中獲取快取的值
$cachedData = $redis->get($cacheKey);

if ($cachedData) {
    // 如果有快取，從 Redis 中獲取數據
    echo "從 Redis 中取得快取的數據: " . $cachedData;
} else {
    // 如果沒有快取，進行資料處理並將結果寫入 Redis
    $data = "這是一些數據"; // 這裡可以是從資料庫查詢的結果或其他計算後的數據
    
    // 將數據寫入 Redis 並設定到期時間
    $redis->set($cacheKey, $data, $cacheTTL);
    
    echo "從資料來源取得數據並寫入 Redis: " . $data;
}

//$redis->del($cacheKey);  //刪除資料
*/

class APICache {
    private $redis;
    private $ttl; // Time To Live for cache items192.168.10.119

    public function __construct($host = '125.229.116.28', $port = 56379, $ttl = 3600) {
        $this->redis = new Redis();
        $this->redis->connect($host, $port);
        $this->ttl = $ttl;
    }

    public function get($key) {
        return $this->redis->get($key);
    }

    public function set($key, $value) {
        return $this->redis->setex($key, $this->ttl, $value);
    }

    public function delete($key) {
        return $this->redis->del($key);
    }
}

// 使用示例
function getUserData($userId) {
    $cache = new APICache();
    $cacheKey = "user:$userId";

    // 嘗試從快取中獲取數據
    $userData = $cache->get($cacheKey);

    if ($userData === false) {
        // 快取中沒有，從數據庫獲取
       // $userData = fetchUserDataFromDatabase($userId); // 假設這個函數存在      
        // 存入快取
       // $cache->set($cacheKey, json_encode($userData));
         $userData='Hello, Redis!';
        $cache->set($cacheKey,$userData);

    } else {
      //  $userData = json_decode($userData, true);
    }

    return $cacheKey."=>".$userData;
}
echo getUserData("user99");
// API 端點示例
/* $app->get('/user/{id}', function ($request, $response, $args) {
    $userId = $args['id'];
    $userData = getUserData($userId);
    return $response->withJson($userData);
}); */

 ?>