Browse Source

chore:更改为标准Cache用法,方便后期通过修改配置切换缓存位置

felixyin 3 months ago
parent
commit
b7d8d5e44f
2 changed files with 27 additions and 35 deletions
  1. 4 1
      .env
  2. 23 34
      app/Http/Controllers/EnumController.php

+ 4 - 1
.env

@@ -42,7 +42,10 @@ QUEUE_CONNECTION=database
 CACHE_STORE=redis
 CACHE_PREFIX=
 
-MEMCACHED_HOST=127.0.0.1
+MEMCACHED_HOST=192.168.110.85
+MEMCACHED_PORT=11211
+MEMCACHED_USERNAME=
+MEMCACHED_PASSWORD=
 
 REDIS_CLIENT=phpredis
 REDIS_HOST=192.168.110.85

+ 23 - 34
app/Http/Controllers/EnumController.php

@@ -4,7 +4,7 @@ namespace App\Http\Controllers;
 
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Redis;
+use Illuminate\Support\Facades\Cache;
 
 /**
  * @group 通用接口
@@ -55,10 +55,13 @@ class EnumController extends Controller
             ]);
         }
 
-        try {
+        // 从Memcached缓存获取数据
+        $cacheKey = "enum:{$enumName}";
+        $enumData = Cache::get($cacheKey);
+
+        if (!$enumData) {
             // 构造完整的枚举类名
             $enumClass = "App\\Enums\\{$enumName}";
-
             // 检查类是否存在
             if (!class_exists($enumClass)) {
                 return response()->json([
@@ -67,39 +70,25 @@ class EnumController extends Controller
                     'code' => 404
                 ]);
             }
-
-            // 从Redis缓存获取数据
-            $cacheKey = "enum:{$enumName}";
-            $enumData = Redis::get($cacheKey);
-
-            if (!$enumData) {
-                // 缓存不存在,获取枚举数据并转换格式
-                $rawData = $enumClass::all();
-                $items = [];
-                foreach ($rawData as $value => $label) {
-                    $items[] = [
-                        'label' => $label,
-                        'value' => $value
-                    ];
-                }
-
-                // 存入Redis缓存,设置过期时间为1天
-                Redis::setex($cacheKey, 86400, json_encode($items));
-            } else {
-                $items = json_decode($enumData, true);
+            // 缓存不存在,获取枚举数据并转换格式
+            $rawData = $enumClass::all();
+            $items = [];
+            foreach ($rawData as $value => $label) {
+                $items[] = [
+                    'label' => $label,
+                    'value' => $value
+                ];
             }
 
-            return response()->json([
-                'items' => $items,
-                'message' => '',
-                'code' => 0
-            ]);
-        } catch (\Throwable $e) {
-            return response()->json([
-                'items' => [],
-                'message' => $e->getMessage(),
-                'code' => 500
-            ]);
+            // 存入Memcached缓存,设置过期时间为1天
+            Cache::put($cacheKey, $items, 86400);
+            $enumData = $items;
         }
+
+        return response()->json([
+            'items' => $enumData,
+            'message' => '',
+            'code' => 0
+        ]);
     }
 }