热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cache缓存Memcached、redis、pac

laravel缓存配置文件#配置文件在configcache.php文件中默认缓存驱动CACHE_DRIVER如果没设置使用file文件缓存defaultenv(CACHE_D
  • laravel 缓存配置文件

# 配置文件在 config/cache.php 文件中
//> 默认缓存驱动 CACHE_DRIVER 如果没设置使用 file 文件缓存
'default' => env('CACHE_DRIVER',‘file’),
//> 缓存类型
'stores' => [
//> php 扩展 缓存
'apc' => [
'driver' => 'apc',
],
//> 数组作为缓存存储
'array' => [
'driver' => 'array'
],
//> 数据库作为缓存存储
'database' => [
'driver' => 'database',
'table' => 'cache', //> 缓存数据表名cache(如果没表前缀时)
],
//> 文件缓存
'file' => [
'dirver' => 'file',
//> 文件缓存位置 在 storage/framework/cache目录下
'path' => storage_path('framework/cache'),
],
//> memcached 缓存
'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),
//> 当前端口权重(memcached是支持分布式所以可以配置多台服务器)
'weight' => 100,
],
],
],
//> redis 缓存
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
],
//> 缓存前缀 这里的前缀在redis软件中默认是 laravel:
'prefix' => 'laravel',
];

  • array、file、database、apc缓存

array :作为缓存一般用于调数数据时
file :作为缓存一般叫常用
database :作为缓存需要迁移一张cache数据表(参看手册)
apc :作为缓存需要打开扩展(作者百度得知(apc在5.6没有安装扩展,改为apcu扩展安装))

  • apcu (apc) 扩展在win上面安装 并 使用
    apcu – 扩展
    • 注意:1. 安装时对应当前php版本信息下载对应的apcu扩展安装
    • 注意:2. php_apcu.dll添加在php/ext目录下(并在php/php.ini中添加extensiOns=php_apcu.dll即可)
  • 在linux上安装:查看其它文档
  • 关于redis的安装参看win-php-扩展文档
  • 关于memcached在win上是不支持的(win上支持memcache,但是Laravel框架又不支持memcache)(这里占时不测试)
    //> – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

# Cache 缓存使用
Cache::get('name','default'); //> 获取缓存里面name键值 (第二个参数使用默认值)
# get()方法的第二个参数支持一个闭包函数(用于返回一个默认值)
Cache::put('name','value',$min); //> 设置缓存里面值为name、值为value、第三个参数时间
# store():方法设置缓存类型(store设置当前缓存驱动)
Cache::store('redis')->get('name');
# has($key):判断当前key值是都在缓存中存在
$this->store->has('name'); //> 使用契约时

  • 操作整数 (自增、自减)(对于记录点记录等叫常用)

# 自增(默认值每次加 1 ; 我们可以设置value值,设置每次自加多少)
Cache::increment($key,$value = 1);
# 自减 (默认值每次减1 ; 我们也可以设置value值)
Cache::decrement($key,$value = 1);
# deccrement(自减有什么用?比如:我们在设置限制当前用户的登录次数时,可以使用)
# remember('key',$min,$callback):获取指定的key值,如果key值不存在使用闭包函数返回值插入key->返回值到缓存中
$this->cache->remember('name',60*24,function(){ return //> 返回值; });
# forever($key,$value):存储一个键值(过期时间:永久 )(相比于put而言就是时间是永久的)
# rememberForever($key,$callback):结合remember()和forever()两个方法不难得出(该方法的作用是:如果$key不在缓存中存在,那么存储$callback的返回值到缓存中(过期时间:永久))

# pull($key,$default):从缓存中获取$key对应的值,并在缓存中删除当前key值(如果key不存在,返回一个默认值null(或者自己设置一个默认返回值default))
# get($key,$default) :用法也是获取key值,也是存在就返回指定key对应的值(否则返回默认值null(当然可以设置默认返回值))(唯一区别在于:get获取后不会从缓存中删除指定的key值)

put()方法的过期时间:除了可以填写一个分钟数之外,还可以填写一个当前的Carbon实例
put('name','value',1):name=value; 过期时间1分钟后
put('name','value',Carbon::now()->addMinutes(10)); //> 过期时间10分钟后

# add('key','value',$minutes):当key不在当前缓存里面时,添加缓存数据
$this->cache->add('name','value',1); //> 当name不在当前缓存里面时,添加缓存name=value值过期时间是1分钟

  • 清空缓存

# forget($key):从当前缓存中移除指定的key值对应的缓存数据
# flush() :从当前缓存中移除所有数据(如果当前缓存中存在其他项目缓存数据时,请谨慎使用,该方法)

  • Cache 契约

# 如果注入该契约的话(将不能操作store方法(切换底层缓存类型)(也不能操作tags缓存标签))
# 1. Cache ===> Illuminate\Contracts\Cache\Repository
# 如果注册该缓存则可以操作store方法
# 2. Cache::driver() ===> Illuminate\Contracts\Cache\Factory
$this->cache->store('redis')->get(name'');

  • 使用缓存标签(file和database缓存驱动不支持)(Memcached驱动使用标签缓存性能最佳)

# 使用标签缓存tags()
$this->cache->store('redis')->tags(['pe','ex'])->put('one','one',Carbon::now()->addMinutes(10));
$this->cache->store('redis')->tags(['pe','wc'])->put('tow','tow',Carbon::now()->addMinutes(10));
# 获取添加缓存标签的数据,必须加上对应的标签才能访问到对应的数据
$this->cache->store('redis')->tags(['pe','ex'])->get('one'); //> 这里能得到
$this->cache->store('redis')->get('tow'); //> 这里得不到指定的tow对应的数据
# 删除打上标签的数据
$this->cache->store('redis')->tags('pe')->flush(); //> 删除标签包含pe的缓存数据
$this->cache->store('redis')->tags([''pe','ex''])->flush(); //> 清除打上pe或ex缓存的所有数据

推荐阅读
author-avatar
059586768803wsq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有