【问题标题】: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) 并将你的功能添加到那里。并根据您的自定义适配器更改您的配置。

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2012-10-21
      • 2021-10-18
      • 2021-01-27
      • 2017-05-05
      相关资源
      最近更新 更多