如何在API中获取所有Redis缓存键以验证缓存功能正常?
验证Redis缓存状态的实现方案
现有代码展示
ConversationObserver 代码
/** * @param Conversation $conversation */ public function created(Conversation $conversation) { $messages = Conversation::where('conversation_meta_id', $conversation->conversation_meta_id) ->select('conversation_meta_id', DB::raw("DATE(created_at) as date")) ->groupBy('conversation_meta_id', 'date') ->get(); Cache::put('messages_' . $conversation->conversation_meta_id, ConversationMessageResource::collection($messages), 300); }
控制器API代码片段
$messages = Conversation::where('conversation_meta_id', $conversation->id) ->select('conversation_meta_id', DB::raw("DATE(created_at) as date")) ->groupBy('conversation_meta_id', 'date') ->get(); $messages = Cache::remember('messages_' . $conversation->id, 300, function () use ($messages) { return ConversationMessageResource::collection($messages); });
获取所有Redis缓存键的实现
要在API中验证缓存是否正常工作,可通过以下代码获取Redis中的缓存键:
实现代码
// 获取Redis中所有缓存键(仅建议在开发环境使用) $allCacheKeys = Redis::keys('*'); // 仅获取与messages相关的缓存键(更高效) $messageCacheKeys = Redis::keys('messages_*'); // 返回验证结果 return response()->json([ 'all_cache_keys' => $allCacheKeys, 'message_related_keys' => $messageCacheKeys ]);
注意事项
Redis::keys('*')会遍历Redis所有键,在生产环境大量键的场景下会导致Redis阻塞,仅用于开发阶段验证- 确保Laravel已配置Redis作为缓存驱动,否则无法调用
Redisfacade相关方法 - 可根据实际需求调整通配符规则,精准匹配目标缓存键
内容的提问来源于stack exchange,提问作者M Shahbaz
相关产品推荐
相关产品推荐

