java操作redis中如何使用expire模拟指定时间段内限制ip访问的次数
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,java操作redis中如何使用expire模拟指定时间段内限制ip访问的次数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
aws 服务器快速迁移
现货制作软件开发
鸡西政务软件开发多少钱
服务器硬盘和台式机硬盘
大数据库思维方式是什么
辽宁网络安全教育平台
分布式存储能不能放关系数据库
做软件开发的产品助理
数据库访问mysql数据库
为何有网络还提示无法连接服务器
数据库课程实验实习课程设计报告
义乌市帮帮网络技术有限公司
鹤壁飞鸿网络技术有限公司
时序数据库 20000点专业版
崩坏3qq登录服务器怎么样
access数据库难吗
数据库储存器安全
表格单元格抓取部分数据库
数据库表示
数据库技术及运用清华大学
网络安全内外部协调制度
替换硬盘 数据库变慢
腾讯服务器能同时使用吗
软件开发目的范文
swift服务器搭建
广州通用服务器厂家供应
天下奇闻视频软件开发
数据库驱动断言
广东存储服务器虚拟主机
蓝桥杯软件开发大赛