数据缓存

原文:http://www.yiiframework.com/doc-2.0/guide-caching-data.html

数据缓存特性,即将某些 PHP 变量保存到缓存中,然后再从缓存中检索。这个特性同时也是其他更高级缓存特性(如检索缓存,分页缓存)的基础。

以下代码为数据缓存特性的典型用法,其中$cache 指的是缓存组件

从 2.0.11 版开始,缓存组件提供了 getOrSet() 方法,用以简化获取、计算和保存数据的代码。以下代码与上述代码作用完全相同:

当缓存中有与 $key 相关的数据时,将返回该数据。否则,将执行匿名函数,并且将计算结果保存到缓存,然后返回。

若匿名函数需要作用域意外的某些数据,您可以使用 use 语句传递。例如:

注意: getOrSet() 方法同样支持生存期和依赖。参见 Cache Expiration 和 Cache Dependencies 以进一步了解。

缓存组件

数据缓存特性依靠“缓存组件”来实现。“缓存组件”代表了诸如内存、文件和数据库等缓存存储方式。

缓存组件通常注册为 应用程序组件 ,因此它们可以在全局范围内配置和访问。以下代码展示了如何配置 cache 应用程序组件,并使用带有两个缓存服务器的 memcached :

然后,您就可以通过使用表达式 Yii::$app->cache 来访问上述缓存组件了。

由于所有缓存组件都支持相同的一组 API(应用程序编程接口),所以您可以通过重新配置应用程序配置中的缓存配置来切换到另一个缓存组件,而且不需要修改涉及到缓存的代码。例如,您可以修改上述配置为使用 APC cache

提示:您可以注册多个缓存组件。而名为 cache 的组件可以作为许多缓存依赖类 (如 yii\web\UrlManager) 的默认组件。

支持的缓存存储

Yii 支持很多种缓存存储。总结如下:

  • yii\caching\ApcCache: 使用 PHP APC 扩展。This option can be considered as the fastest one when dealing with cache for a centralized thick application (如单一服务器,没有专用的负载均衡服务器,等)。
  • yii\caching\DbCache: uses a database table to store cached data. To use this cache, you must create a table as specified in yii\caching\DbCache::$cacheTable.
  • yii\caching\DummyCache: serves as a cache placeholder which does no real caching. The purpose of this component is to simplify the code that needs to check the availability of cache. For example, during development or if the server doesn’t have actual cache support, you may configure a cache component to use this cache. When an actual cache support is enabled, you can switch to use the corresponding cache component. In both cases, you may use the same code Yii::$app->cache->get($key) to attempt retrieving data from the cache without worrying thatYii::$app->cache might be null.
  • yii\caching\FileCache: 使用标准的文件存储缓存数据。此方法尤其适合于缓存大块数据,如页面内容。
  • yii\caching\MemCache: 使用 PHP memcache 和 memcached 扩展。 This option can be considered as the fastest one when dealing with cache in a distributed applications (e.g. with several servers, load balancers, etc.)
  • yii\redis\Cache: 基于 Redis 键值存储实现的缓存组件 (需要 redis 版本为 2.6.12 或更高)。
  • yii\caching\WinCache: 使用 PHP WinCache (see also) 扩展。
  • yii\caching\XCache: 使用 PHP XCache 扩展。
  • Zend Data Cache 作为底层缓存媒介。

TBS.

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据