一、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;
}
}