Redis基础-4.Jedis

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Redis基础-4.Jedis脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

目录
  • 4.Jedis
    • 4.1 Jedis简介
    • 4.2 Hello world(Jedis版)
    • 4.3 Jedis读写redis数据
    • 4.4 Jedis简易工具类开发
    • 4.5 可视化客户端

4.Jedis

4.1 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 

4.2 Hello world(Jedis版)

准备工作

基于maven 
<dependency> 
    <groupId>redis.clients</groupId> 
    <artifactId>jedis</artifactId> 
    <version>2.9.0</version> 
</dependency> 

客户端连接redis

// 连接redis 
Jedis jedis = new Jedis("127.0.0.1", 6379);

// 操作redis  (方法名与命令相同)
jedis.set("name", "ITheima"); 
jedis.get("name"); 

// 关闭redis连接 
jedis.close();

API文档 :http://xetorthio.github.io/jedis/

4.3 Jedis读写redis数据

案例:服务调用次数控制

人工智能领域的语义识别与自动对话将是未来服务业机器人应答呼叫体系中的重要百度自研用户评
价语义识别服务,免费开放给企业试用,同时训练百度自己的模型。现对试用用户的使用行为进行限速,
限制每个用户每分钟最多发起10次调用 

案例要求 
①设定A、B、C三个用户 
②A用户限制10次/分调用,B用户限制30次/分调用,C用户不限制 

案例:需求分析

①设定一个服务方法,用于模拟实际业务调用的服务,内部采用打印模拟调用 
②在业务调用前服务调用控制单元,内部使用redis进行控制,参照之前的方案 
③对调用超限使用异常进行控制,异常处理设定为打印提示信息 
④主程序启动3个线程,分别表示3种不同用户的调用 

案例:实现步骤

  1. 设定业务方法
void business(String id,long num){ 
    System.out.println("用户"+id+"发起业务调用,当前第"+num+"次"); 
} 
  1. 设定多线类,模拟用户调用
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();; 
        } 
    } 
} 
  1. 设计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(); 
        } 
    } 
} 
  1. 设计启动主程序
public static void main(String[] args) { 
    MyThread t1 = new MyThread("初级用户"); 
    t1.start(); 
} 
 后续1:对业务控制方案进行改造,设定不同用户等级的判定 
后续2:将不同用户等级对应的信息、限制次数等设定到redis中,使用hash保存 

4.4 Jedis简易工具类开发

基于连接池获取连接

JedisPool:Jedis提供的连接池技术 poolconfig:连接池配置对象 host:redis服务地址 port:redis服务端口号

public JedisPool(GenericObjectPoolConfig poolConfig, String host, int port) { 
    this(poolConfig, host, port, 2000, (String)null, 0, (String)null); 
} 

封装连接参数

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; 
} 

4.5 可视化客户端

Redis Desktop Manager

Redis基础-4.Jedis

脚本宝典总结

以上是脚本宝典为你收集整理的Redis基础-4.Jedis全部内容,希望文章能够帮你解决Redis基础-4.Jedis所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。