Redis在Laravel中初识

对于缓存系统 如今网站基本都集成了非常不错的缓存驱动 如Redis和Memcached 今天来简单谈谈在Laravel中是这些缓存技术

简介

Redis 是一款开源且先进的键值对数据库。由于它可用的键包含了字符串、哈希、列表、集合 和 有序集合,因此常被称作数据结构服务器。

当然在开始使用在前 在你的环境先下载好Redis 如果是windows文章下面有安装教程链接 如果是Mac或者Linux则可以按照官网上安装

当然为了可视化更好的管理Redis数据的话 这里推荐一个工具就是 Redis 可视化管理工具

在使用 Redis 之前,你必须通过 Composer 安装 predis/predis 扩展包(~1.0)

1
$ composer require predis/predis

如果你需要一些可视化的Redis管理工具 Redis Desktop Manager不失为一种很好的选择

配置

有关缓存的配置都是在config/cache.php里面 而对于缓存存储的则是在config/database.php

config/database.php里 可以看到关于Redis的相关配置

1
2
3
4
5
6
7
8
9
10
11
12
'redis' => [

'client' => 'predis',

'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],

],

这些默认的配置对于我们开发来说已经足够了

当然除了这几个配置 PRedis 也可以为其配置其他参数 只需增加相应的配置参数即可

1
'read_write_timeout' => 60,

则是定义读取超时的时间

开始使用

就像我们平常使用Redis一样 我们在PRedis也会有一系列的set/get方法 在这里我们可以使用Redis这个facade

话不多说 为了更好的说明 我们可以去创建一个控制器

1
$ php artisan make:controller RedisController

新建一个方法 以一个简单的实例测试下

1
2
3
4
5
6
public function setInfo()
{
Redis::set("name", "GeekGhc");

dd(Redis::get("name"));
}

当然在我们的Redis Desktop Manager打开可以查看到对应的数据信息

1

还有就是我们可以将command传递至服务器 它接收命令的名称作为第一个参数,第二个参数则为值的数组:

1
$values = Redis::command('lrange', ['name', 5, 10]);

当然还有一些其他的Redis的命令用户 在官方文档上都有介绍 包括我们的订阅和发布

通过Cache Facade

当然对于Redis或者Memcached这些缓存方式 我们可以使用Cache这个Facade来管理

比如对于同样的Redis缓存的基本操作 Cache Facade提供了方便而又简洁的方法访问缓存实例

例如对于同样的基本的值的存取 我们可以这样写:

1
2
3
4
5
6
public function setInfo()
{
Cache::Store("redis")->put("name","gavin",1);

dd(Cache::store('redis')->get("name","def"));
}

当然还有一些获取更新 删除 永久写入这些操作在文档中写的很详细 这里不再多说

值得一提的是 当我们需要全部清空这里的缓存时 提供给我们的方法是:

1
Cache::flush();

还有一个我们经常用到的就是获取更新 文档上给出的一个事例就是当我们需要从缓存取出所有用户 而当缓存中并没有时 则从数据库中

读取并加入缓存 这样的情景的话我们可以使用一个remember方法(这在之后我们也会用到)

1
2
3
$value = Cache::remember('users', $minutes, function () {
return DB::table('users')->get();
});

我们需要了解的也就是这些 当然还有一些增加缓存驱动 我们得结合具体的应用场景再说

相关链接