Redis
介绍
Redis 是开源,先进的键值对保存库。由于它可用的键包含了 字串、哈希、列表、集合 和 有序集合,因此常被称作数据结构服务器。
在使用 Redis 之前,你需要经由 Composer 将 predis/predis
扩展包装在 Laravel 中。
提醒: 如果你用 PECL 安装了 Redis PHP extension,则需要重命名
config/app.php
里的 Redis 别名。
配置文件
应用程序的 Redis 配置文件在 config/database.php
。在这个文件里,你会看到 redis 数组,里面有应用程序使用的 Redis 服务器数据:
'redis' => array(
'cluster' => true,
'default' => array('host' => '127.0.0.1', 'port' => 6379),
),
默认的服务器配置对于开发应该是足够的。然而,你可以根据使用环境自由修改数组数据。只要给每个 Redis 一个名称,并且配置服务器的 host 和 port。
cluster
选项会让 Laravel 的 Redis 客户端在所有 Redis 节点间执行客户端分片( client-side sharding ),让你建立节点池,并因此拥有大量的 RAM 可用。然而,客户端分片的节点不能执行容错转移;因此,这主要适合用可以从另一台主要数据保存库取得的缓存数据。
如果你的 Redis 服务器需要认证,你可以在 Redis 服务器配置文件里加入 password
为键值的参数配置。
使用方式
你可以经由 Redis::connection
方法得到 Redis 实例:
$redis = Redis::connection();
你会得到一个使用 Redis 默认服务器的实例。如果你没有使用服务器集群,你可以在 connection
方法传入定义在 Redis 配置文件的服务器名称,以连到特定服务器:
$redis = Redis::connection('other');
一旦你有了 Redis 客户端实例,就可以使用实例发出任何 Redis 命令。Laravel 使用魔术方法传递命令到服务器:
$redis->set('name', 'Taylor');
$name = $redis->get('name');
$values = $redis->lrange('names', 5, 10);
注意,传入命令的参数仅只是传递到魔术方法里。当然,你不一定要使用魔术方法,你也可以使用 command
方法传递命令到服务器:
$values = $redis->command('lrange', [5, 10]);
若你只想对默认服务器下命令,可以使用 Redis
类的静态魔术方法:
Redis::set('name', 'Taylor');
$name = Redis::get('name');
$values = Redis::lrange('names', 5, 10);
管道
当你想要一次发送很多命令到服务器时可以使用管道。使用 pipeline
方法:
发送多个命令到服务器
Redis::pipeline(function($pipe)
{
for ($i = 0; $i < 1000; $i++)
{
$pipe->set("key:$i", $i);
}
});