public function expireIfKeyHasValue($key, $value, $ttlInSeconds) { if (empty($value)) { return false; } $this->connectIfNeeded(); $script = 'if redis.call("GET",KEYS[1]) == ARGV[1] then return redis.call("EXPIRE",KEYS[1], ARGV[2]) else return 0 end'; // ideally we would use evalSha to reduce bandwidth! return (bool) $this->redis->eval($script, array($key, $value, (int) $ttlInSeconds), 1); }