寫在前面的話:讀書破萬卷,編碼若有神
--------------------------------------------------------------------
一、Redis處理過時key機制
當client主動訪問key的時,會先對key進行超時判斷,過期的key會當即刪除;另外redis會在後臺,每秒10次的執行以下操做:隨機選取100個key校驗是否過時,若是有25個以上的key過時了,馬上額外隨機選取下100個key。也就是說,若是過時的key很少,redis最多每秒回收200條左右,若是有超過25%的key過時了,它就會作得更多,這樣即便從不被訪問的數據,過時了也會被刪除掉。
--------------------------------------------------------------------
二、處理過時keys的命令
2.一、expire : 設置過時時間。格式是:expire key值 秒數
2.二、expireat : 設置過時時間,格式是:expireat key值 到期的時間戳
2.三、ttl : 查看還有多少秒過時,格式是:ttl key值, -1表示永不過時,-2表示已通過期
2.四、persist : 設置成永不過時,格式是:persist key值 刪除key的過時設置;另外使用set或者getset命令爲鍵賦值的時候,也會清除鍵的過時時間。
2.五、pttl:查看還有多少毫秒過時,格式是:pttl key值
2.六、pexpire : 設置過時時間,格式是:pexpire key值 毫秒數
2.七、pexpireat : 設置過時時間,格式是:pexpireat key值 到期的時間戳
java代碼以下:
1 import redis.clients.jedis.Jedis;
2
3 /**
4 * 處理過時keys的命令
5 */
6 public class KeyExpireOperation {
7 public static void main(String[] args) {
8 Jedis jedis = new Jedis("127.0.0.1",6379);
9 /**
10 * 示例1: expire : 設置過時時間。格式是:expire key值 秒數
11 */
12 Long expire = jedis.expire("k1", 6);
13 System.out.println("expire = " + expire);
14
15 /**
16 * 示例2: expireat : 設置過時時間,格式是:expireat key值 到期的時間戳
17 */
18 Long expireAt = jedis.expireAt("k1", System.currentTimeMillis() + 100);
19 System.out.println("expireAt = " + expireAt);
20
21 /**
22 * 示例3:ttl : 查看還有多少秒過時,格式是:ttl key值, -1表示永不過時,-2表示已通過期
23 */
24 Long ttl = jedis.ttl("k1");
25 System.out.println("ttl = " + ttl);
26
27 /**
28 * 示例4:persist : 設置成永不過時,格式是:persist key值 刪除key的過時設置;另外使用set或者getset命令爲鍵賦值的時候,也會清除鍵的過時時間。
29 */
30 Long persist = jedis.persist("k1");
31 System.out.println("persist = " + persist);
32
33 /**
34 * 示例5:pttl:查看還有多少毫秒過時,格式是:pttl key值
35 */
36 Long pttl = jedis.pttl("k1");
37 System.out.println("pttl = " + pttl);
38
39 /**
40 * 已經不推薦使用了
41 * 示例6:pexpire : 設置過時時間,格式是:pexpire key值 毫秒數
42 */
43 Long pexpire = jedis.pexpire("k1", 1000);
44
45 /**
46 * 示例7:pexpireat : 設置過時時間,格式是:pexpireat key值 到期的時間戳
47 */
48 Long pexpireAt = jedis.pexpireAt("k1", System.currentTimeMillis());
49 System.out.println("pexpireAt = " + pexpireAt);
50 }
51 }