在将 Redis 与 Laravel 一起使用之前,我们鼓励你通过 PECL 安装并使用 PhpRedis PHP 扩展。 尽管扩展安装起 来更复杂,但对于大量使用 Redis 的应用程序可能会产生更好的性能。
或者,您可以通过 Composer 安装 predis / predis 包:
composer require predis/predis
配置
Laravel 应用的 Redis 配置都在配置文件 config/database.php 中。在这个文件里,你可以看到 redis 数组里包 含了应用程序使用的 Redis 服务器信息:
redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
database' => env('REDIS_DB', 0),
],
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
默认的服务器配置应该足以进行开发。当然,你也可以根据使用的环境来随意更改这个数组。只需在配置文件中给 每个 Redis 服务器指定名称、host(主机)和 port(端口)即可。
Redis交互
你可以通过调用 Redis facade 上的各种方法来与 Redis 交互。 Redis facade 支持动态方法,意味着你可以在 facade 上调用各种 Redis 命令 ,命令将直接传递给 Redis。在示例中,将通过 Redis facade 上的 get 方法来 调用 Redis 上的 GET 命令
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redis;
class UserController extends Controller
{
/**
* 显示给定用户的配置文件。
* @param int $id
* @return Response
*/
public function showProfile($id)
{
$user = Redis::get('user:profile:'.$id);
return view('user.profile', ['user' => $user]);
}
如上所述,你可以在 Redis facade 上调用任意 Redis 命令。Laravel 使用魔术方法将命令传递给 Redis 服务器, 因此只需传递 Redis 命令所需的参数即可:
Redis::set('name', 'Taylor');
$values = Redis::lrange('names', 5, 10);
或者,你也可以使用 command 方法将命令传递给服务器,它接受命令的名称作为其第一个参数,并将值的数组作 为其第二个参数:
$values = Redis::command('lrange', ['name', 5, 10]);
使用 多个Redis连接
你可以通过 Redis::connection 方法获得 Redis 实例:
$redis = Redis::connection();
这会返回一个默认的 Redis 实例。你可以传递连接或者集群名称给 connection 方法来获取在 Redis 配置中特定 服务或集群:
$redis = Redis::connection('my‐connection');
Redis 管道命令
当你需要在一个操作中给服务器发送很多命令时,推荐你使用管道命令。 pipeline 方法接受一个 Redis 实例的 闭包 。你可以将所有的命令发送给 Redis 实例,它们都会在一个操作中执行完成:
Redis::pipeline(function ($pipe) {
for ($i = 0; $i < 1000; $i++) {
$pipe‐>set("key:$i", $i);
}
});
网友评论