ttl

1. 基本語法

ttl(key , callback)

查詢key值的時效剩下幾(time to live)。針對key值不存在或未設定效期等情境,根據版本的不同,回傳值也有差異,請參考以下表格:

版本

key不存在

key存在但未設定效期

Redis 2.6 開始

-1

-1

Redis 2.8 開始

-2

-1

2. 範例

(1) 為key值設定5秒效期,時間超過效期資料自動變空值。

setex語法可替String資料設定效期(Expired Time)

client.setex('hello', 5, 'world');
client.ttl('hello', redis.print); 
client.get('hello', redis.print); 
Reply: 5
Reply: world

(2) 注意:ttl剩0秒的當下,仍然可能取得value(尚未變空值)

client.setex('hello', 5, 'world');

function delay(ms: number) {
    return new Promise( resolve => setTimeout(resolve, ms) );
}

(async () => { 
    client.get('hello', redis.print); 
    client.ttl('hello', redis.print); 
    await delay(5000);
    client.get('hello', redis.print); 
    client.ttl('hello', redis.print); 
    await delay(1000);
    client.get('hello', redis.print); 
    client.ttl('hello', redis.print); 
})();
    
Reply: 5
Reply: world
Reply: 0
Reply: world
Reply: -2
Reply: null

tag: expire

Last updated

Was this helpful?