我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Laravel操作redis和缓存操作详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Laravel操作redis和缓存操作详解

一:操作redis

1:redis拓展安装

composer require predis/predis

或者你也可以通过 PECL 安装 PhpRedis PHP 扩展,安装方法比较复杂,个人不推荐

2:配置redis

在config/database.php文件中配置redis

(1):单个redis配置

'redis' => [

    'client' => env('REDIS_CLIENT', 'predis'),//别名,如果你安装的是PhpRedis,将client值改为phpredis

    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),//redis服务器主机
        'password' => env('REDIS_PASSWORD', null),//redis服务器密码
        'port' => env('REDIS_PORT', 6379),//redis服务器端口
        'database' => env('REDIS_DB', 0),
    ],

    'cache' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),//redis服务器主机
        'password' => env('REDIS_PASSWORD', null),//redis服务器密码
        'port' => env('REDIS_PORT', 6379),//redis服务器端口
        'database' => env('REDIS_CACHE_DB', 1),
    ],

],

(2):redis集群配置

'redis' => [

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

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

],

3:操作redis

(1):设置redis

Redis::set('val1','asdasd');

(2):获取redis

Redis::get('key')

(3):删除redis

Redis::del('key');

二:缓存操作

1:缓存配置

laravel框架的缓存配置在config/cache.php文件中,配置参数有:

(1):配置cache的驱动

'default' => env('CACHE_DRIVER', 'file')

Laravel 自带了几个不错且可开箱即用的驱动

• file - 将 Session 保存在 framework/cache/data 中。

• cookie - Session 保存在安全加密的 Cookie 中。

• database - Session 保存在关系型数据库中。

• memcached / redis - Sessions 保存在其中一个快速且基于缓存的存储系统中。

• array - Sessions 保存在 PHP 数组中,不会被持久化。

(2):根据你所选的驱动配置

'stores' => [

        'apc' => [
            'driver' => 'apc',
        ],

        'array' => [
            'driver' => 'array',
        ],

        'database' => [
            'driver' => 'database',
            'table' => 'cache',
            'connection' => null,
        ],

        'file' => [
            'driver' => 'file',
            'path' => storage_path('framework/cache/data'),
        ],

        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [
                env('MEMCACHED_USERNAME'),
                env('MEMCACHED_PASSWORD'),
            ],
            'options' => [
                // Memcached::OPT_CONNECT_TIMEOUT => 2000,
            ],
            'servers' => [
                [
                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => env('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'cache',
        ],

        'dynamodb' => [
            'driver' => 'dynamodb',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
            'endpoint' => env('DYNAMODB_ENDPOINT'),
        ],

    ],

• 如果你选择了的database作为驱动的时,就需要修改stores内的database配置

'database' => [
    'driver' => 'database',
    'table' => 'cache',//配置的缓存表名
    'connection' => null,//连接名,这个是在config/database.php文件配置的,不进行配置使用默认连接的数据库
],

你选择了database作为缓存驱动的话,在目录命令行执行

php artisan cache:table
php artisan migrate

这时候会在数据库生成一个cache表用于存储缓存数据

• 如果你选择了file作为驱动时,就需要修改stores内的file配置

'file' => [
    'driver' => 'file',
    'path' => storage_path('framework/cache/data'),//这里配置的是缓存数据保存地址
],

• 如果你选择了redis作为驱动时,就需要修改stores内的redis配置

'redis' => [
    'driver' => 'redis',
    'connection' => 'default',//redis的连接名,对应config/database.php文件的redis配置,如果不进行配置使用默认的redis连接配置
],

2:缓存操作

(1):设置缓存

Cache::put('key', 'value', $minutes);

//将不存在于缓存中的数据放入缓存中,如果存放成功返回 true ,否则返回 false
Cache::add('key', 'value', $minutes);

//数据永久存入缓存
Cache::forever('key', 'value');

//获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存
$value = Cache::remember('users', $minutes, function () {
    return DB::table('users')->get();
});

//获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存并永久储存
$value = Cache::rememberForever('users', function() {
    return DB::table('users')->get();
});

(2):获取缓存

$value = Cache::get('key')

//传递第二个参数,用来指定如果查找的数据不存在时,你希望返回的默认值
$value = Cache::get('key', 'default');

//第二个参数传递 Closure 作为默认值。如果指定的数据不存在于缓存中,将返回 Closure 的结果
$value = Cache::get('key', function () {
    return DB::table(...)->get();
});

//判断缓存是否存在,如果值为 null 或 不存在返回false
Cache::has('key')

(3):删除缓存

//从缓存中获取到数据之后再删除它,如果缓存中不存在该数据, 则返回 null
$value = Cache::pull('key');
//删除缓存
Cache::forget('key');
//清空缓存
Cache::flush();

(4):缓存递增递减

increment 和 decrement 方法可以用来调整高速缓存中整数项的值。这两个方法都可以传入第二个可选参数,用来指示要递增或递减值的数量

注意:使用increment和decrement前提对应的缓存之前必须有缓存数据,不然返回NULL

Cache::increment('key');
Cache::increment('key', 2);
Cache::decrement('key');
Cache::decrement('key', 2);

(5):使用多种缓存方式

如果你想要使用多种缓存,你可以使用下面这种形式操作缓存,其他方法同理

$value = Cache::store('file')->get('foo');//获取
Cache::store('redis')->put('bar', 'baz', 10);//设置

以上就是Laravel操作redis和缓存操作详解的详细内容,更多关于Laravel操作redis 缓存操作的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Laravel操作redis和缓存操作详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Laravel操作redis和缓存操作详解

这篇文章主要为大家详细介绍了Laravel操作redis和缓存操作的相关知识,文中的示例代码讲解详细,具有一定的学习和借鉴价值,感兴趣的小伙伴可以跟随小编一起学习游戏
2023-02-13

laravel框架中缓存的操作示例

这篇文章给大家分享的是有关laravel框架中缓存的操作示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。laravel为不同的缓存系统提供了统一的API。缓存配置位于config/cache.php。Larav
2023-06-14

redis缓存的简单操作(get、put)

本文介绍简单的redis缓存操作,包括引入jedisjar包、配置redis、RedisDao需要的一些工具、向redis中放数据(put)、从redis中取数据(get)、访问redis时的逻辑 一、引入jedis jar包