缓存项

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.2,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

缓存项

单位的信息存储在缓存中缓存项的键/值对。在缓存组件所代表的CacheItem类。

缓存项的键和值

关键的缓存条目是一个普通的字符串作为它的标识符,所以它必须是独一无二的每个缓存池。你可以自由选择的关键,但他们应该只包含字母(a - z、a - z),数字(0 - 9)和_符号。其他常见的符号(如{,},(,),/,\@)保留PSR-6未来使用的标准。

价值的缓存条目可以是任何数据表示为一个类型由PHP可序列化的,如基本类型(字符串、整数、浮点数、布尔、null),数组和对象。

创建缓存条目

缓存项的创建getItem(键)缓存池的方法。的参数是关键项目:

1 2
/ /缓存池对象创建之前美元美元numProducts=美元缓存- >getItem (“stats.num_products”);

然后,使用设置()方法来设置存储在缓存中的数据项:

1 2 3 4 5 6 7 8 9 10
/ /存储一个简单的整数美元numProducts- >集(4711年);美元缓存- >保存(美元numProducts);/ /存储数组美元numProducts- >集(数组(“category1”= >4711年,“category2”= >2387年));美元缓存- >保存(美元numProducts);

的关键,任何给定的值可以获得相应的缓存项getter方法:

1 2 3 4
美元cacheItem=美元缓存- >getItem (“exchange_rate”);/ /……美元关键=美元cacheItem- >getKey ();美元价值=美元cacheItem- >get ();

缓存项失效

默认缓存项存储永久。在实践中,这“永久存储”可以根据正在使用的缓存类型的不同,有很大变化,解释的缓存池篇文章。

但是,在某些应用程序通常使用缓存项与寿命更短。考虑例如应用程序缓存只是一分钟的最新消息。欧宝app在哪里找在这种情况下,使用expiresAfter ()方法来设置缓存条目的秒数:

1 2 3 4 5
美元latest欧宝app在哪里找News=美元缓存- >getItem (“latest_欧宝app在哪里找news”);美元latest欧宝app在哪里找News- >expiresAfter (60);/ / 60秒= 1分钟/ /这个方法还接受\ DateInterval实例美元latest欧宝app在哪里找News- >expiresAfter (DateInterval::createFromDateString (“1小时”));

定义另一个相关的方法称为缓存项expiresAt ()设置项目的确切日期和时间将到期:

1 2
美元mostPopular欧宝app在哪里找News=美元缓存- >getItem (“popular_欧宝app在哪里找news”);美元mostPopular欧宝app在哪里找News- >expiresAt (\ DateTime (“明天”));

缓存项,也有失误

使用缓存机制来提高应用程序的性能是很重要的,但它不应被要求使应用程序工作。事实上,PSR-6标准状态缓存错误不应导致应用程序失败。

在实践中这意味着getItem ()方法总是返回一个对象实现Psr \ \ CacheItemInterface缓存界面,即使不存在高速缓存条目。因此,你不必处理返回值,您可以安全地存储在缓存中值等

为了决定是否返回的对象是正确的,缓存使用的概念,也有失误:

  • 缓存命中率发生在缓存中找到所请求的项目时,它的值是不损坏或无效,它没有过期;
  • 缓存错过是相反的,所以他们发生缓存中的条目没有找到时,它的值是损坏的或无效的任何理由或项目已经过期。

缓存条目对象定义一个布尔值isHit ()方法返回真正的缓存命中率:

1 2 3 4 5 6 7 8 9
美元latest欧宝app在哪里找News=美元缓存- >getItem (“latest_欧宝app在哪里找news”);如果(!美元latest欧宝app在哪里找News- >isHit ()) {/ /做一些繁重的计算美元欧宝app在哪里找=……;美元缓存- >保存(美元latest欧宝app在哪里找News- >集(美元欧宝app在哪里找));}其他的{美元欧宝app在哪里找=美元latest欧宝app在哪里找News- >get ();}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。