You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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作为缓存驱动,否则无法调用Redis facade相关方法
  • 可根据实际需求调整通配符规则,精准匹配目标缓存键

内容的提问来源于stack exchange,提问作者M Shahbaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:58:06