新建示例项目
laravel new redis-demo
在 redis-demo 项目根目录下的 .env 环境配置文件中配置 Redis 连接信息:
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
我们可以基于 Laravel 全局中间件结合 Redis 的 INCR 指令来实现这个功能,创建一个名为 SiteVisits 的中间件:
php artisan make:middleware SiteVisits
代码如下:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;
class SiteVisits
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
Redis::incr('site_total_visits');
return $next($request);
}
}
在 app/Http/Kernel.php 中应用这个全局中间件:
protected $middleware = [
...
\App\Http\Middleware\SiteVisits::class,
];
我们在 routes/web.php 中注册一个路由获取计数器的值进行测试:
Route::get('/site_visits', function () {
return '网站全局访问量:' . \Illuminate\Support\Facades\Redis::get('site_total_visits');
});
在浏览器中访问该路由,每次刷新页面计数器的值都会 +1,说明计数器工作正常。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。