目录
Jedis
Jedis简介
Java语言连接redis服务
- Jedis
编程语言与redis
- Java语言连接redis服务
- Jedis
- SpringData Redis
- Lettuce
- C 、C++ 、C# 、Erlang、Lua 、Objective-C 、Perl 、PHP 、Python 、Ruby 、Scala
- 可视化连接redis客户端
- Redis Desktop Manager
- Redis Client
- Redis Studio
HelloWorld(Jedis版)
- jar包导入
- 基于maven
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
客户端连接redis
- 连接redis
Jedis jedis = new Jedis("localhost", 6379);
- 操作redis
jedis.set("name", "itheima"); jedis.get("name");
- 关闭redis连接
jedis.close();
示例
使用list示例
使用hash示例
案例:服务调用次数控制
- 人工智能领域的语义识别与自动对话将是未来服务业机器人应答呼叫体系中的重要技术,百度自研用户评价语义识别服务,免费开放给企业试用,同时训练百度自己的模型。现对试用用户的使用行为进行限速,限制每个用户每分钟最多发起10次调用
- 案例要求
- ① 设定A、B、C三个用户
- ② A用户限制10次/分调用,B用户限制30次/分调用,C用户不限制
- 案例:实现步骤
- 1. 设定业务方法
void business(String id,long num){ System.out.println("用户"+id+"发起业务调用,当前第"+num+"次"); }
- 2. 设定多线类,模拟用户调用
public void run(){ while(true){ jd.service(id); //模拟调用间隔,设定为1.x秒 try{ Random r = new Random(); Thread.sleep(1000+ r.nextInt(200)); }catch (InterruptedException e){ e.printStackTrace();; } } }
- 设计redis控制方案
void service(String id){ Jedis jedis = new Jedis("localhost", 6379); String value = jedis.get("compid:" + id); //判定是否具有调用计数控制,利用异常进行控制处理 if(value == null) { //没有控制,创建控制计数器 jedis.setex("compid:" + id, 20, ""+(Long.MAX_VALUE-10)); }else{ //有控制,自增,并调用业务 try{ Long val = jedis.incr("compid:"+id); business(id,10+val-Long.MAX_VALUE); }catch (JedisDataException e){ //调用次数溢出,弹出提示 System.out.println("用户:"+id+"使用次数已达到上限,请稍后再试,或升级VIP会员"); return; }finally{ jedis.close(); } } }
- 设计启动主程序
public static void main(String[] args) { MyThread t1 = new MyThread("初级用户"); t1.start(); }
Jedis简易工具类开发
封装连接参数
- jedis.properties
jedis.host=localhost jedis.port=6379 jedis.maxTotal=30 jedis.maxIdle=10
加载配置信息
- 静态代码块初始化资源
static{ //读取配置文件 获得参数值 ResourceBundle rb = ResourceBundle.getBundle("jedis"); host = rb.getString("jedis.host"); port = Integer.parseInt(rb.getString("jedis.port")); maxTotal = Integer.parseInt(rb.getString("jedis.maxTotal")); maxIdle = Integer.parseInt(rb.getString("jedis.maxIdle")); poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(maxTotal); poolConfig.setMaxIdle(maxIdle); jedisPool = new JedisPool(poolConfig,host,port); }
获取连接
- 对外访问接口,提供jedis连接对象,连接从连接池获取
public static Jedis getJedis(){ Jedis jedis = jedisPool.getResource(); return jedis; }
示例
- 基础版本
- 改进版
- 建立redis配置文件
- 创建连接池
- 其他文件使用
- 【注】:参考黑马Redis教程:https://www.bilibili.com/video/BV1AE411j7Wq?t=5