ZF2 Redis 适配器:获取 TTL 或为密钥设置新的到期时间?
ZF2 Redis Adapter: getting TTL or setting a new expiration for a key?
Redis可以回馈key的TTL,或者设置新的过期时间;但我看不到如何使用 ZF2 Redis 缓存存储适配器实现相同的目的。
我知道我可以为每个适配器实例设置默认 TTL,但我需要能够知道一个值还剩多少秒,或者能够 'touch' 一个值,扩展它的寿命,或者甚至明确地设置一个新的到期时间。
现在是否有可能使用 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
) 并将你的功能添加到那里。并根据您的自定义适配器更改您的配置。
Redis可以回馈key的TTL,或者设置新的过期时间;但我看不到如何使用 ZF2 Redis 缓存存储适配器实现相同的目的。
我知道我可以为每个适配器实例设置默认 TTL,但我需要能够知道一个值还剩多少秒,或者能够 'touch' 一个值,扩展它的寿命,或者甚至明确地设置一个新的到期时间。
现在是否有可能使用 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
) 并将你的功能添加到那里。并根据您的自定义适配器更改您的配置。