【问题标题】:ZF2 Redis Adapter: getting TTL or setting a new expiration for a key?ZF2 Redis 适配器:获取 TTL 或为密钥设置新的过期时间?
【发布时间】:2016-09-02 14:18:47
【问题描述】:
Redis 可以返回一个 key 的 TTL,或者设置一个新的过期时间;但我看不到如何使用 ZF2 Redis 缓存存储适配器实现相同的目标。
我知道我可以为每个适配器实例设置一个默认 TTL,但我需要能够知道一个值还剩多少秒,或者能够“触摸”一个值,延长它的寿命,或者甚至明确设置新的过期时间。
现在有没有办法使用 Zend 的适配器来实现这些?有什么办法可以规避这个并直接做吗?
【问题讨论】:
标签:
php
redis
zend-framework2
【解决方案1】:
您可以使用以下约定来设置临时过期值。我不知道你如何获得过期时间
/**
* @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) 并将你的功能添加到那里。并根据您的自定义适配器更改您的配置。