当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel操作redis和缓存操作详解

发布:smiling 来源: PHP粉丝网  添加日期:2023-06-25 11:46:57 浏览: 评论:0 

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

一:操作redis

1:redis拓展安装

composer require predis/predis

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

2:配置redis

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

(1):单个redis配置

  1. 'redis' => [ 
  2.  
  3.     'client' => env('REDIS_CLIENT''predis'),//别名,如果你安装的是PhpRedis,将client值改为phpredis 
  4.  
  5.     'default' => [ 
  6.         'host' => env('REDIS_HOST''127.0.0.1'),//redis服务器主机 
  7.         'password' => env('REDIS_PASSWORD', null),//redis服务器密码 
  8.         'port' => env('REDIS_PORT', 6379),//redis服务器端口 
  9.         'database' => env('REDIS_DB', 0), 
  10.     ], 
  11.  
  12.     'cache' => [ 
  13.         'host' => env('REDIS_HOST''127.0.0.1'),//redis服务器主机 
  14.         'password' => env('REDIS_PASSWORD', null),//redis服务器密码 
  15.         'port' => env('REDIS_PORT', 6379),//redis服务器端口 
  16.         'database' => env('REDIS_CACHE_DB', 1), 
  17.     ], 
  18.  
  19. ], 

(2):redis集群配置

  1. 'redis' => [ 
  2.  
  3.     'client' => env('REDIS_CLIENT''predis'), 
  4.  
  5.     'clusters' => [ 
  6.         'default' => [ 
  7.             [ 
  8.                 'host' => env('REDIS_HOST''localhost'), 
  9.                 'password' => env('REDIS_PASSWORD', null), 
  10.                 'port' => env('REDIS_PORT', 6379), 
  11.                 'database' => 0, 
  12.             ], 
  13.         ], 
  14.     ], 
  15.  
  16. ], 

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):根据你所选的驱动配置

  1. 'stores' => [ 
  2.  
  3.         'apc' => [ 
  4.             'driver' => 'apc'
  5.         ], 
  6.  
  7.         'array' => [ 
  8.             'driver' => 'array'
  9.         ], 
  10.  
  11.         'database' => [ 
  12.             'driver' => 'database'
  13.             'table' => 'cache'
  14.             'connection' => null, 
  15.         ], 
  16.  
  17.         'file' => [ 
  18.             'driver' => 'file'
  19.             'path' => storage_path('framework/cache/data'), 
  20.         ], 
  21.  
  22.         'memcached' => [ 
  23.             'driver' => 'memcached'
  24.             'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), 
  25.             'sasl' => [ 
  26.                 env('MEMCACHED_USERNAME'), 
  27.                 env('MEMCACHED_PASSWORD'), 
  28.             ], 
  29.             'options' => [ 
  30.                 // Memcached::OPT_CONNECT_TIMEOUT => 2000, 
  31.             ], 
  32.             'servers' => [ 
  33.                 [ 
  34.                     'host' => env('MEMCACHED_HOST''127.0.0.1'), 
  35.                     'port' => env('MEMCACHED_PORT', 11211), 
  36.                     'weight' => 100, 
  37.                 ], 
  38.             ], 
  39.         ], 
  40.  
  41.         'redis' => [ 
  42.             'driver' => 'redis'
  43.             'connection' => 'cache'
  44.         ], 
  45.  
  46.         'dynamodb' => [ 
  47.             'driver' => 'dynamodb'
  48.             'key' => env('AWS_ACCESS_KEY_ID'), 
  49.             'secret' => env('AWS_SECRET_ACCESS_KEY'), 
  50.             'region' => env('AWS_DEFAULT_REGION''us-east-1'), 
  51.             'table' => env('DYNAMODB_CACHE_TABLE''cache'), 
  52.             'endpoint' => env('DYNAMODB_ENDPOINT'), 
  53.         ], 
  54.  
  55.     ], 

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

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

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

php artisan cache:table

php artisan migrate

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

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

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

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

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

2:缓存操作

(1):设置缓存

  1. Cache::put('key''value'$minutes); 
  2.  
  3. //将不存在于缓存中的数据放入缓存中,如果存放成功返回 true ,否则返回 false 
  4. Cache::add('key''value'$minutes); 
  5.  
  6. //数据永久存入缓存 
  7. Cache::forever('key''value'); 
  8.  
  9. //获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存 
  10. $value = Cache::remember('users'$minutesfunction () { 
  11.     return DB::table('users')->get(); 
  12. }); 
  13.  
  14. //获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存并永久储存 
  15. $value = Cache::rememberForever('users'function() { 
  16.     return DB::table('users')->get(); 
  17. }); 

(2):获取缓存

  1. $value = Cache::get('key'
  2.  
  3. //传递第二个参数,用来指定如果查找的数据不存在时,你希望返回的默认值 
  4. $value = Cache::get('key''default'); 
  5.  
  6. //第二个参数传递 Closure 作为默认值。如果指定的数据不存在于缓存中,将返回 Closure 的结果 
  7. $value = Cache::get('key'function () { 
  8.     return DB::table(...)->get(); 
  9. }); 
  10.  
  11. //判断缓存是否存在,如果值为 null 或 不存在返回false 
  12. Cache::has('key'

(3):删除缓存

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

(4):缓存递增递减

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

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

  1. Cache::increment('key'); 
  2. Cache::increment('key', 2); 
  3. Cache::decrement('key'); 
  4. Cache::decrement('key', 2); 

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

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

$value = Cache::store('file')->get('foo');//获取

Cache::store('redis')->put('bar', 'baz', 10);//设置

Tags: Laravel操作redis

分享到: