Redis可以退还TTL作为密钥,或设置新的到期时间。但我看不到如何使用ZF2 Redis缓存存储适配器实现相同的功能。
我知道我可以为每个adapater实例设置默认的TTL,但是我需要能够知道一个值还剩下多少秒,或者能够“触摸”一个值,延长其寿命,甚至设置明确地指定新的有效期。
现在是否有可能使用Zend的适配器来实现上述目的?有什么办法可以避免并直接做到这一点?
最佳答案
您可以使用以下约定来设置临时过期值。我不知道如何获得过期时间
/**
* @var \Zend\Cache\Storage\Adapter\Redis $redisCache
*/
$redisCache = $this->getServiceLocator()->get('core.cache.redis');
$tempTtl = $redisCache->getOptions()->getTtl();
$redisCache->getOptions()->setTtl(5);
var_dump($redisCache->setItem('test', '123456'));
$redisCache->getOptions()->setTtl($tempTtl);
您应该使用TTL命令来知道Redis命令行上的键还剩下多少秒。但是Zend Cache不处理此命令。如果要使用此命令,则可以扩展zend默认适配器(
\Zend\Cache\Storage\Adapter\Redis
)并在其中添加功能。并根据您的自定义适配器更改配置。