Redis - 查看一个 KEY 剩多久过期

  • 作者:KK

  • 发表日期:2020.03.05


要点速读

  • 命令就是ttl,用法是ttl key名,会返回距离过期时刻的剩余秒数

  • 如果检查一个并不存在的 key,会返回-2


命令行测试

redis-cli
# 先试试 key1 ,返回 -2 说明这个 key 并不存在
ttl key1

#设置 key1 的值为 value1,60秒后过期
set key1 value1 EX 60

#得到 value1
get key1

#我这里显示57,就是剩下57秒过期
ttl key1

# 56……
ttl key1

# 1分钟后,输出 nil
get key1

# -2
ttl key1

PHP代码测试

$redis = new \Redis();
$redis->connect('请填写测试的redis服务器地址');

echo '这个key1当前不存在,ttl的值是:' . $redis->ttl('key1') . PHP_EOL;

$redis->setex('key1', 60, 'value1');
echo '设置后的取出值是:' . $redis->get('key1') . PHP_EOL;
echo '剩余过期秒数:' . $redis->ttl('key1') . PHP_EOL;

sleep(3);
echo '设置3秒后,剩余过期秒数:' . $redis->ttl('key1') . PHP_EOL;

sleep(2);
echo '再2秒后,剩余过期秒数:' . $redis->ttl('key1') . PHP_EOL;
echo '值还在:' . $redis->get('key1') . PHP_EOL;

sleep(58);
echo '已过期,没有值了:' . $redis->get('key1');

输出如下:

这个key1当前不存在,ttl的值是:-2
设置后的取出值是:value1
剩余过期秒数:60
设置3秒后,剩余过期秒数:57
再2秒后,剩余过期秒数:55
值还在:value1
已过期,没有值了: