Laravel之缓存

版权声明:珞羽飘凌 https://blog.csdn.net/lingluo110700/article/details/85634485

简介

PHP缓存包括PHP编译缓存和PHP数据缓存两种。PHP是一种解释型语言,属于边编译边运行的那种。这种运行模式的优点是程序修改很方便,但是运行效率却很低下。PHP编译缓存针对这种情况做改进处理,使得PHP语言只要运行一次,就可以把程序的编译结果缓存起来。这样,接下来的每次运行都不需要再次编译了,这大大提高PHP运行速度。

在大部份情况下我们的网站都会使用数据库作为站点数据存储的容器。当你执行一个SQL查询时,典型的处理过程是:连接数据库->准备 SQL查询->发送查询到数据库->取得数据库返回结果->关闭数据库连接。但数据库中有些数据是完全静态的或不太经常变动的,缓存系统会通过把SQL查询的结果缓存到一个更快的存储系统中存储,从而避免频繁操作数据库而很大程度上提高了程序执行时间,而且缓存查询结果也允许你后期处理。

PHP数据缓存运用于PHP实际开发之中针对数据处理进行缓存,主要两大方向为:针对数据库数据进行缓存和针对PHP模板数据进行缓存。

PHP数据缓存

PHP的数据缓存包括针对数据库数据进行缓存和针对PHP模板数据进行缓存。

针对数据库数据进行缓存的工具有memcache等。针对PHP模板数据进行缓存的工具主要有smarty等。

数据缓存:

这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类;

2、页面缓存:

每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些PHP缓存机制类通常有此功能,例如smarty模板、thinkphp框架)

Laravel 为不同的缓存系统提供了统一的 API。缓存配置位于 config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。

主要方法:

Cache::put()

Cache::get()

Cache::add()

Cache::pull()

Cache::forever()

Cache::forget()

Cache::has()
配置文件,位于 config/cache.php,默认是使用文件缓存

在控制器里面,使用缓存,需要引入 use Cache

(1)设置缓存

语法:Cache::put(‘key’, ‘value’, $minutes);

注意:如果该键已经存在,则直接覆盖原来的值

语法:Cache::add(‘key’, ‘value’, $minutes);

add 方法只会在缓存项不存在的情况下添加数据到缓存,如果数据被成功添加到缓存返回 true,否则,返回false:

永久存储数据

forever 方法用于持久化存储数据到缓存,这些值必须通过 forget 方法手动从缓存中移除:

Cache::forever(‘key’, ‘value’);
(2)获取缓存数据

Cache 中的 get 方法用于从缓存中获取缓存项,如果缓存项不存在,返回 null。如果需要的话你可以传递第二个参数到 get 方法指定缓存项不存在时返回的自定义默认值:

$value = Cache::get(‘key’);

$value = Cache::get(‘key’, ‘default’);

$value = Cache::get(‘name’, ‘小宝’);

可以传递一个闭包作为默认值,如果缓存项不存在的话闭包的结果将会被返回。传递闭包允许你可以从数据库或其它外部服务获取默认值:

$value = Cache::get(‘key’, function() {

return DB::table(...)->get();

});

检查缓存项是否存在

has 方法用于判断缓存项是否存在:

if (Cache::has(‘key’)) {

//

}
(3)删除缓存数据

语法:

$value = Cache::pull(‘key’); 从缓存中获取缓存项然后删除,如果缓存项不存在的话返回null

Cache::forget(‘key’); 使用forget 方法从缓存中移除缓存项数据

Cache::flush();使用 flush 方法清除所有缓存:
(4)获取存储

有时候你可能想要获取缓存项,但如果请求的缓存项不存在时给它存储一个默认值。例如,你可能想要从缓存中获取所有用户,或者如果它们不存在的话,从数据库获取它们并将其添加到缓存中,你可以通过使用 Cache::remember 方法实现:

$value = Cache::remember(‘users’, $minutes, function() {

return DB::table('users')->get();

});
如果缓存项不存在,传递给 remember 方法的闭包被执行并且将结果存放到缓存中。

1、put() 键 值 有效时间(分钟)

Cache::put(‘key1’,‘val1’,10);

2、add() 若key2不存在,则添加成功 否则,添加失败

Cache::add(‘key2’,‘val2’,20);

3、forever() 永久保存对象到缓存

Cache::forever(‘key3’,‘val3’);

4、has() 判断是否存在

Cache::has(‘key1’);

5、get() 取值

Cache::get(‘key1’);

6、pull() 取值删除

Cache::pull(‘key1’);

7、forget() 删除缓存

Cache::forget(‘key1’);
三、存放路径:

默认的文件缓存,在执行该文件后,会在项目中storage/framework/cache/生成缓冲方件

PHP缓存技术之内存缓存:

在里就不介绍了,不是本文所要讨论的,只简单提一下:

Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。

猜你喜欢

转载自blog.csdn.net/lingluo110700/article/details/85634485
今日推荐