zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    python之路_socketserver模块
    java 字符串String操作工具类
    maven常用插件
    查杀oracle锁表
    正则表达式汇总
    javascript 数组操作
    javascript中sleep等待实现
    js获取服务端IP及端口及协议
    log4j中的MDC和NDC
    如何设置(修改)jetty(maven插件maven-jetty-plugi)的端口
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/12080655.html
Copyright © 2011-2022 走看看