翼度科技»论坛 编程开发 PHP 查看内容

Laravel操作redis和缓存操作详解

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
一:操作redis


1:redis拓展安装
  1. composer require predis/predis
复制代码
或者你也可以通过 PECL 安装 PhpRedis PHP 扩展,安装方法比较复杂,个人不推荐

2:配置redis

在config/database.php文件中配置redis
(1):单个redis配置
  1. 'redis' => [

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

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

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

  15. ],
复制代码
(2):redis集群配置
  1. 'redis' => [

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

  3.     'clusters' => [
  4.         'default' => [
  5.             [
  6.                 'host' => env('REDIS_HOST', 'localhost'),
  7.                 'password' => env('REDIS_PASSWORD', null),
  8.                 'port' => env('REDIS_PORT', 6379),
  9.                 'database' => 0,
  10.             ],
  11.         ],
  12.     ],

  13. ],
复制代码
3:操作redis

(1):设置redis
  1. Redis::set('val1','asdasd');
复制代码
(2):获取redis
  1. Redis::get('key')
复制代码
(3):删除redis
  1. Redis::del('key');
复制代码
二:缓存操作


1:缓存配置

laravel框架的缓存配置在config/cache.php文件中,配置参数有:
(1):配置cache的驱动
  1. '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.         'apc' => [
  3.             'driver' => 'apc',
  4.         ],

  5.         'array' => [
  6.             'driver' => 'array',
  7.         ],

  8.         'database' => [
  9.             'driver' => 'database',
  10.             'table' => 'cache',
  11.             'connection' => null,
  12.         ],

  13.         'file' => [
  14.             'driver' => 'file',
  15.             'path' => storage_path('framework/cache/data'),
  16.         ],

  17.         'memcached' => [
  18.             'driver' => 'memcached',
  19.             'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
  20.             'sasl' => [
  21.                 env('MEMCACHED_USERNAME'),
  22.                 env('MEMCACHED_PASSWORD'),
  23.             ],
  24.             'options' => [
  25.                 // Memcached::OPT_CONNECT_TIMEOUT => 2000,
  26.             ],
  27.             'servers' => [
  28.                 [
  29.                     'host' => env('MEMCACHED_HOST', '127.0.0.1'),
  30.                     'port' => env('MEMCACHED_PORT', 11211),
  31.                     'weight' => 100,
  32.                 ],
  33.             ],
  34.         ],

  35.         'redis' => [
  36.             'driver' => 'redis',
  37.             'connection' => 'cache',
  38.         ],

  39.         'dynamodb' => [
  40.             'driver' => 'dynamodb',
  41.             'key' => env('AWS_ACCESS_KEY_ID'),
  42.             'secret' => env('AWS_SECRET_ACCESS_KEY'),
  43.             'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
  44.             'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
  45.             'endpoint' => env('DYNAMODB_ENDPOINT'),
  46.         ],

  47.     ],
复制代码
• 如果你选择了的database作为驱动的时,就需要修改stores内的database配置
  1. 'database' => [
  2.     'driver' => 'database',
  3.     'table' => 'cache',//配置的缓存表名
  4.     'connection' => null,//连接名,这个是在config/database.php文件配置的,不进行配置使用默认连接的数据库
  5. ],
复制代码
你选择了database作为缓存驱动的话,在目录命令行执行
  1. php artisan cache:table
  2. 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. //将不存在于缓存中的数据放入缓存中,如果存放成功返回 true ,否则返回 false
  3. Cache::add('key', 'value', $minutes);

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

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

  10. //获取users缓存,如果不存在,执行第三个参数,将返回值存入缓存并永久储存
  11. $value = Cache::rememberForever('users', function() {
  12.     return DB::table('users')->get();
  13. });
复制代码
(2):获取缓存
  1. $value = Cache::get('key')

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

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

  8. //判断缓存是否存在,如果值为 null 或 不存在返回false
  9. 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):使用多种缓存方式
如果你想要使用多种缓存,你可以使用下面这种形式操作缓存,其他方法同理
  1. $value = Cache::store('file')->get('foo');//获取
  2. Cache::store('redis')->put('bar', 'baz', 10);//设置
复制代码
以上就是Laravel操作redis和缓存操作详解的详细内容,更多关于Laravel操作redis 缓存操作的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/article/275121.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具