其他分享
首页 > 其他分享> > 入门6数据缓存

入门6数据缓存

作者:互联网

数据缓存

数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回。 它也是更高级缓存特性的基础,例如查询缓存 和内容缓存

如下代码是一个典型的数据缓存使用模式。 其中 $cache 指向缓存组件

从 2.0.11 版本开始, 缓存组件 提供了 getOrSet() 方法来简化数据的取回、计算和存储。 下面的代码逻辑和上一个例子是完全一样的:

当缓存中有关联 $key 的数据时,将返回这个缓存的值。 否则就执行匿名函数来计算出将要缓存的数据并返回它。

如果匿名函数需要作用域外的数据时,可以使用 use 语句把这些数据传递到匿名函数中。 例如:

缓存组件

数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存,文件,数据库。

缓存组件通常注册为应用程序组件,这样它们就可以 在全局进行配置与访问。如下代码演示了如何配置应用程序组件 cache 使用两个 memcached 服务器:

然后就可以通过 Yii::$app->cache 访问上面的缓存组件了。

如:以下项目中使用了memcache和redis

支持的缓存存储器

Yii 支持一系列缓存存储器,概况如下:

缓存 API

所有缓存组件都有同样的基类 yii\caching\Cache ,因此都支持如下 API:

缓存键

存储在缓存中的每项数据都通过键作唯一识别。 当你在缓存中存储一项数据时,必须为它指定一个键, 稍后从缓存中取回数据时,也需要提供相应的键。

一般使用CommonUtil::generalKey()来生成key

缓存过期

默认情况下,缓存中的数据会永久存留,除非它被某些缓存策略强制移除(例如:缓存空间已满,最老的数据会被移除)。 要改变此特性,你可以在调用 set() 存储一项数据时提供一个过期时间参数。 该参数代表这项数据在缓存中可保持有效多少秒。 当你调用 get() 取回数据时, 如果它已经过了超时时间,该方法将返回 false,表明在缓存中找不到这项数据。 例如:

从 2.0.11 开始,如果想自定义缓存的持续时间,你可以在缓存组件配置中设置 defaultDuration 成员属性的值。 这样设置会覆盖默认的缓存持续时间,且在使用 set() 方法时不必每次都传递 $duration 参数。

缓存依赖

除了超时设置,缓存数据还可能受到缓存依赖的影响而失效。 例如,yii\caching\FileDependency 代表对一个文件修改时间的依赖。 这个依赖条件发生变化也就意味着相应的文件已经被修改。 因此,缓存中任何过期的文件内容都应该被置为失效状态, 对 get() 的调用都应该返回 false。

缓存依赖用 yii\caching\Dependency 的派生类所表示。 当调用 set() 在缓存中存储一项数据时, 可以同时传递一个关联的缓存依赖对象。例如:

下面是可用的缓存依赖的概况:

缓存冲刷

当你想让所有的缓存数据失效时,可以调用 yii\caching\Cache::flush()

冲刷缓存数据,你还可以从控制台调用 yii cache/flush

 

标签:缓存,入门,cache,yii,组件,caching,数据
来源: https://www.cnblogs.com/Adam-Ye/p/15134425.html