计算生产中不推荐的 Redis keys 是否还有过期时间?

Is counting Redis keys not recommended in production even has expiration time?

我在这里 post 看到 How to count the number of keys matching a pattern? 评论说不建议在生产中计算密钥。我相信这是真的。

我的问题是.. 密钥过期时仍然不推荐吗?过期删除密钥。

我想做的是通过将活跃用户存储在过期的 redis 密钥中来计算活跃用户的数量。我用 Laravel 来做。我需要计算匹配键才能获得活跃用户的数量。

有什么推荐吗?谢谢大家!

依靠前端设置的last_login字段或last_active字段不是更实用的解决方案吗?每 15 分钟或类似时间使用 Laravel 应用程序或用户 activity。您将在应用程序中的每次调用中设置的中间件。

class LastActivityMiddleware
{
    public function handle(Request $request, Closure $next, ...$guards)
    {
        $user = Auth::user();
        
        $user->last_activity = now();
        $user->save();

        return $next($request);
    }
}

这将使它成为可能。

User::where('last_active', '>=', now()->subMinutes(15))->count();

另一个解决方案的 运行 时间会很糟糕,显然会破坏缓存,并且对于一个简单的问题来说只是一个非常复杂的解决方案。