java操作redis中如何使用expire模拟指定时间段内限制ip访问的次数
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,java操作redis中如何使用expire模拟指定时间段内限制ip访问的次数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收
千家信息网最后更新 2026年10月31日java操作redis中如何使用expire模拟指定时间段内限制ip访问的次数
java操作redis中如何使用expire模拟指定时间段内限制ip访问的次数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
首先加入maven依赖,使用JUinit做单元测试。
redis.clients jedis 2.7.0 junit junit 3.8.1 test
redisutil类,创建一个线程池,可以返回redis连接资源以及释放资源
/** * redis工具类,从redis链接池中获取一个链接资源 * @author Hades * time:2015年12月14日 */public class RedisUtils { //定义连接池 public static JedisPool pool = null; /** * 获取链接资源 * @return */ public static synchronized Jedis getJedis() { if(pool==null){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(100);//最大连接数 jedisPoolConfig.setMaxIdle(10); jedisPoolConfig.setMaxWaitMillis(1000);//类似于超时时间 jedisPoolConfig.setTestOnBorrow(true); pool = new JedisPool(jedisPoolConfig,"192.168.57.133",6379);//创建连接池 } Jedis jedis = pool.getResource(); return jedis; } /** * 释放链接资源 * @param jedis */ public static void returnJedis(Jedis jedis) { pool.returnResourceObject(jedis); }redis客户端类,使用的是juinit做单元测试哈
/** * redis测试类 * @author Hades * */public class RedisTest { static Jedis jedis =RedisUtils.getJedis(); @Test public void test3() throws Exception { String ip ="192.168.57.2";//访问的ip //测试 for (int i = 0; i < 20; i++) { boolean flag = testLogin(ip); System.out.println(flag); } } /** * 模拟限制ip指定时间段内访问次数 * @param ip * @return */ public boolean testLogin(String ip) { String value = jedis.get(ip); if(value==null){ jedis.set(ip, "1"); jedis.expire(ip, 60);//设置过期时间60秒 return true; }else{ int parseInt = Integer.parseInt(value); //60秒内访问超过10次,就禁止访问 if(parseInt>10){ System.out.println("访问受限!!!!"); return false; } jedis.incr(ip); } return true; } /** * 不使用管道 向jedis插入一万条数据消耗时间:3184 */ @Test public void test2() throws Exception{ // TODO Auto-generated method stub long start = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { jedis.set("a"+i, i+""); jedis.expire("a"+i, 60); } System.out.println(System.currentTimeMillis()-start); } /** * 使用管道命令批量导入数据 所需时间:204 * @throws Exception */ @Test public void test4() throws Exception { long start = System.currentTimeMillis(); Pipeline pipelined = jedis.pipelined(); for (int i = 0; i < 10000; i++) { pipelined.set("a"+i, i+""); pipelined.expire("a"+i, 60); } pipelined.sync(); System.out.println(System.currentTimeMillis()-start); }}看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
资源
时间
链接
测试
单元
数据
管道
帮助
时间段
次数
限制
最大
清楚
万条
内容
命令
客户
客户端
对此
工具
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技平台互联网
互联网通讯科技
互联网 的科技创新
互联网科技论文
融势互联网科技
互联网科技公司名称
江苏南京365互联网科技
温州喔噻互联网科技有限公司
苏州铭阳互联网科技有限公司
搜狐科技互联网
本届互联网博览会上的黑科技
民营互联网公司国防科技
北京市互联网新科技
中国互联网有什么科技
上海互联网科技公司ppt
风投北京互联网科技
宁波跨境商互联网科技有限公司
万物互联网智能科技
同城互联网络科技
北京品多多互联网科技有限公司
互联网科技工作委员会副主任毛军
美国互联网保险保险科技
互联网核心科技是什么
深圳互联网络科技有限公司
云电互联网科技
博兴的互联网电子科技公司
玉溪新华互联网科技好不好
长沙茂晟互联网科技有限公司
群盈汇互联网科技有限公司
江苏互联网智能科技软件