缓存项
编辑该页面缓存项
单位的信息存储在缓存中缓存项的键/值对。在缓存组件所代表的CacheItem类。它们用于缓存合同和PSR-6接口。
缓存项的键和值
的关键的缓存条目是一个普通的字符串作为它的标识符,所以它必须是独一无二的每个缓存池。你可以自由选择的关键,但他们应该只包含字母(a - z、a - z),数字(0 - 9)和_
和。
符号。其他常见的符号(如{
,}
,(
,)
,/
,\
,@
和:
)保留PSR-6未来使用的标准。
的价值的缓存条目可以是任何数据表示为一个类型由PHP可序列化的,如基本类型(字符串、整数、浮点数、布尔、null),数组和对象。
创建缓存条目
创建缓存项的唯一途径是通过缓存池。当使用缓存的合同,他们是作为参数传递给重新计算回调:
1 2 3 4
/ /缓存池对象创建之前美元美元productsCount=美元缓存- >get (“stats.products_count”,函数(ItemInterface美元项){/ / […]});
当使用PSR-6,他们创建getItem(键)
缓存池的方法:
1 2
/ /缓存池对象创建之前美元美元productsCount=美元缓存- >getItem (“stats.products_count”);
然后,使用Psr \缓存\ CacheItemInterface:集
方法来设置存储在缓存中的数据项(这一步是使用缓存时自动完成合同):
1 2 3 4 5 6 7 8 9 10
/ /存储一个简单的整数美元productsCount- >集(4711年);美元缓存- >保存(美元productsCount);/ /存储数组美元productsCount- >集((“category1”= >4711年,“category2”= >2387年]);美元缓存- >保存(美元productsCount);
的关键,任何给定的值可以获得相应的缓存项getter方法:
1 2 3 4
美元cacheItem=美元缓存- >getItem (“exchange_rate”);/ /……美元关键=美元cacheItem- >getKey ();美元价值=美元cacheItem- >get ();
缓存项失效
默认情况下,缓存项存储永久。在实践中,这“永久存储”可以根据正在使用的缓存类型的不同,有很大变化,解释的缓存池和支持的适配器篇文章。
但是,在某些应用程序通常使用缓存项与寿命更短。考虑例如应用程序缓存只是一分钟的最新消息。欧宝平台是合法的吗在这种情况下,使用expiresAfter ()
方法来设置缓存条目的秒数:
1 2 3 4
美元latest欧宝平台是合法的吗News- >expiresAfter (60);/ / 60秒= 1分钟/ /这个方法还接受\ DateInterval实例美元latest欧宝平台是合法的吗News- >expiresAfter (DateInterval::createFromDateString (“1小时”));
定义另一个相关的方法称为缓存项expiresAt ()
设置项目的确切日期和时间将到期:
1
美元mostPopular欧宝平台是合法的吗News- >expiresAt (新\ DateTime (“明天”));
缓存项,也有失误
使用缓存机制来提高应用程序的性能是很重要的,但它不应被要求使应用程序工作。事实上,PSR-6明智的文件缓存错误不应导致应用程序失败。
与PSR-6在实践中,这意味着getItem ()
方法总是返回一个对象实现Psr \ \ CacheItemInterface缓存
界面,即使不存在高速缓存条目。因此,你不必处理零
返回值,您可以安全地存储在缓存中值等假
和零
。
为了决定是否返回的对象代表一个值来自存储,缓存使用的概念,也有失误:
- 缓存命中率发生在缓存中找到所请求的项目时,它的值是不损坏或无效,它没有过期;
- 缓存错过是相反的,所以他们发生缓存中的条目没有找到时,它的值是损坏的或无效的任何理由或项目已经过期。
缓存条目对象定义一个布尔值isHit ()
方法返回真正的
缓存命中率:
1 2 3 4 5 6 7 8 9
美元latest欧宝平台是合法的吗News=美元缓存- >getItem (“latest_欧宝平台是合法的吗news”);如果(!美元latest欧宝平台是合法的吗News- >isHit ()) {/ /做一些繁重的计算美元欧宝平台是合法的吗=……;美元缓存- >保存(美元latest欧宝平台是合法的吗News- >集(美元欧宝平台是合法的吗));}其他的{美元欧宝平台是合法的吗=美元latest欧宝平台是合法的吗News- >get ();}