ZF2 Redis适配器:获取TTL或为密钥设置新的过期时间


ZF2 Redis Adapter: getting TTL or setting a new expiration for a key?

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)并在其中添加您的功能。并根据您的自定义适配器更改您的配置。