laravel的缓存机制 各种驱动配置 Redis

2 篇文章 0 订阅
2 篇文章 1 订阅

相关文章分享:PHP实现队列(二)Redis 实现队列

背景

前几篇大致了解了Laravel的核心内容:facades,ServiceProvider,Redis实现队列,既然已经安装了扩展Predis,那我们直接将项目的缓存系统也调整为使用redis作为驱动。

laravel缓存驱动介绍

Laravel 为各种后端缓存提供了丰富而统一的 API,其配置信息位于 config/cache.php 文件中。在该文件中你可以指定应用默认使用哪个缓存驱动。

一、database 为缓存驱动

当使用 database 缓存驱动时,你需要配置一个表来存放缓存数据

结果如下:
在这里插入图片描述

一、前置工作
php artisan cache:table   //使用artisan命令生成何使的迁移
php artisan migrate   //命令生成表,应该是cache表
二、修改配置

缓存的配置文件Cache.php,根据默认配置default字段,修改env文件中的CACHE_DRIVERdatabase

三、使用
Cache::put('tesvrert123',2222222, now()->addMinutes(10));
dd(Cache::get("tesvrert123"));

然后刷新库,你会发现表cache多了一条记录

二、Redis

在使用 Laravel 的 Redis 缓存之前,你需要通过 PECL 安装 PhpRedis PHP 扩展,或者通过 Composer 安装 predis/predis 包(~1.0)。

一、前置工作
composer require predis/predis

安装扩展

二、修改配置

缓存的配置文件Cache.php,根据默认配置default字段,修改env文件中的CACHE_DRIVERredis
因为是使用predis扩展,所以还需要根据laravel文档配置Redis
主要是将database.php文件中的redis数组下的client有phpredis改为predis;

'redis' => [

        'client' => env('REDIS_CLIENT', 'predis'),

        //如果你的应用使用 Redis 服务器集群,你应该在 Redis 配置文件中使用 clusters 键来定义这些集群
        'clusters' => [
            'default' => [
                [
                    'host' => env('REDIS_HOST', 'localhost'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => 0,
                ],
            ],
        ],
        //如果要使用 Redis 原生集群,需要在配置文件下的 options 键中做出如下指定
        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        ],

        //redis服务提供者创建链接驱动时,使用默认的配置,所以当你想使用Predis扩展时,需要将client调整为predis,这时这里的配置就使用默认的就可以,
        //当然Predis 还支持为每个 Redis 服务器定义其它的链接参数。调整default数据配置即可
        'default' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '0'),
        ],

        'cache' => [
            'url' => env('REDIS_URL'),
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_CACHE_DB', '1'),
        ],

    ],

这里有prefix,是默认你缓存的数据的键的前缀,就是你虽然写的

Cache::put(‘tesvrert123’,2222222, now()->addMinutes(10));

但是其实当你使用laravel的后台扩展管理redis的时候,你会发现他们的key都自动拼接上了这里的前缀
在这里插入图片描述
所以看你个人想法,可以随意更新,我就简单粗暴了设置为了null。。。。

三、使用
Cache::put('tesvrert123',2222222, now()->addMinutes(10));
dd(Cache::get("tesvrert123"));

然后刷新laravel的后台管理工具扩展,你就能直接看到缓存里面的数据了,已经设置的ttl等信息

三、Memcached,file等

使用 Memcached 驱动需要安装 Memcached PECL 扩展包 。你可以把所有的 Memcached 服务器都列在 config/cache.php

其他的我就不意义描述了,可以自己跟着文档看

写在最后

别看这里描述使用redis时配置如此简单,下一篇分享一下我遇到的问题,已经怎么去定位的

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值