Redis鍵的生存時間(expire)

一、redis中可以使用expire命令設置一個鍵的生存時間,到時間後redis會自動刪除它。

expire 設置生存時間(單位/秒)

pexpire設置生存時間(單位/毫秒)

ttl/pttl 查看鍵的剩餘生存時間

persist 取消生存時間

expireat [key] unix時間戳1351858600

pexpireat [key] unix時間戳(毫秒)1351858700000

二、 應用場景:

限時的優惠活動

網站數據緩存(對於一些需要定時更新的數據)

限制網站訪客訪問頻率(例如:1分鐘最多訪問10次)

三、限制網站訪客訪問頻率

package com.chb.common.iface.database.redis;

 

 

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

 

public class RedisUtil {

private final String host = "192.168.179.14";

private final int port = 6379;

public static void main(String[] args) {

RedisUtil redisUtil = new RedisUtil();

Jedis jedis = redisUtil.connect1();

for (int i = 0 ; i < 15; i++) {

boolean visited = redisUtil.checkLogin(jedis, "192.168.179.11");

System.out.println("是否允許訪問:" + visited);

}

}

public boolean checkLogin(Jedis jedis, String key) {

String value = jedis.get(key);

if (value == null) {

jedis.set(key, "0");

jedis.expire(key, 60); // 設置生存週期60s

} else {

int count = Integer.parseInt(value);

if (count >= 10) {

System.out.println("當前訪問頻率過於頻繁....");

return false;

}

}

jedis.incr(key); // 累加訪問次數

return true;

}

public Jedis connect() {

Jedis jedis = new Jedis(host, port);

return jedis;

}

// 使用連接池

public Jedis connect1() {

JedisPoolConfig poolConfig = new JedisPoolConfig();

poolConfig.setMaxTotal(100);//總連接數

poolConfig.setMaxIdle(10);//空閒鏈接數

poolConfig.setMaxWaitMillis(3000);//創建連接的超時時間

poolConfig.setTestOnBorrow(true);//在創建連接的時候是否會測試

JedisPool jedisPool = new JedisPool(poolConfig, host, port);

// 通過連接池獲取jedis 連接

Jedis jedis = jedisPool.getResource();

return jedis;

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章