redis 鍵值對 有效期設置



redis 鍵值對 有效期設置redis中可以使用expire命令設置一個鍵的生存時間,

到時間后redis會自動刪除它<-----> 類比於javaweb系統臨時數據 過期刪除功能

 

expire 設置失效時間(單位/秒)
persist 取消失效時間

ttl/pttl(單位為 秒/毫秒) 查看鍵的剩余時間 

返回三種值 -2(健已經不存在了)  -1(表示永久有效)  大於0的數(還有多少有效時間)


pexpire設置失效時間(單位/毫秒)

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

 

應用:
限時的優惠活動: 活動對應數據限時為1小時 則設置為1小時后失效

網站數據緩存(對於一些需要定時更新的數據)
    比如排名,間隔10分鍾做一次統計的話,那么排名的數據就可以設置 expire
 
網站訪客訪問頻率限制(例如:1分鍾最多訪問10次):  用戶ip作為健,默認值為1,incr命令,

 

set name zm

expire name 60 設置name失效時間為60S

ttl name  查看name健將要失效的剩余生存時間


persist name  取消name的失效時間
ttl name  如果返回是-1 則表示已經取消了name的失效時間  -1表示永久有效


 

 redis 設置IP單位時間內訪問次數, 比如 1分鍾內只能讓客戶IP訪問量3次,否則封IP:

Java代碼   收藏代碼
  1. package bj.zm.redis;  
  2.   
  3.   
  4. import org.junit.Test;  
  5.   
  6. import redis.clients.jedis.Jedis;  
  7. import redis.clients.jedis.Transaction;  
  8. /** 
  9.  * 使用鍵的生存時間來實現控制用戶訪問網站的頻率 
  10.  * @author Administrator 
  11.  * 
  12.  */  
  13. public class TestWebSite {  
  14.     Jedis jedis = new Jedis("192.168.1.110", 6379);  
  15.     @Test  
  16.     public void test(){  
  17.         String ip = "192.168.1.1";// 客戶IP  
  18.         website(ip);  
  19.     }  
  20.     //每次遞增1,如果在60S內訪問超過了3次 則 訪問頻率過高(防止抓取)  模擬的時候 連續執行多次junit來實現打印用戶訪問頻率超限的效果  
  21.     private void website(String ip) {  
  22.         String value = jedis.get(ip);  
  23.         if(value==null){  
  24.             Transaction transaction = jedis.multi();  
  25.             transaction.incr(ip);  
  26.             transaction.expire(ip, 60);  
  27.             transaction.exec();  
  28.         }else{  
  29.             int intvalue = Integer.parseInt(value);  
  30.             if(intvalue<=3){  
  31.                 jedis.incr(ip);  
  32.             }else{  
  33.                 System.err.println("用戶訪問頻率超限!");  
  34.             }  
  35.         }  
  36.     }  
  37.   
  38. }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM