Redis工具jedis

卑微小吴励志写博客第25天。

jedis

jedis简介

编程语言想要操作redis,要做到可以往里面放数据,并且可以取数据。简单来讲,jedis就是java语言用来连接redis的工具,但是java操作redis不仅仅可以使用jedis,还可以有别的操作。

java搭建一个操作redis的demo

下载jar包或者maven工程引入相关依赖。
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

引入jedis依赖和junit依赖。

import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.Arrays;
import java.util.List;

public class JedisDemo {

  @Test
  public void testJedis() {
      //1、连接redis
      Jedis jedis = new Jedis("127.0.0.1", 6379);
      //2、操作redis数据库
      jedis.set("name", "biao");
      String name = jedis.get("name");
      System.out.println(name);
      //3、关闭连接
      jedis.close();
  }

  @Test
  public void testList() {
      //1、连接redis
      Jedis jedis = new Jedis("127.0.0.1", 6379);
      //2、操作redis数据库
      jedis.lpush("list1", "q", "w", "e", "r");
      jedis.rpush("list2", "a", "b", "c");
      List<String> list1 = jedis.lrange("list1", 0, -1);
      for (String s : list1) {
          System.out.println(s);
      }
      //3、关闭连接
      jedis.close();
  }
}

redis怎样操作,指令在jedis中是一模一样的。数据类型也跟java中一样。

jedis入门案例

案例
百度的某项服务,对体验用户每分钟只提供10次服务,或者限定调用次数。
要求:
现有A/B/C三个用户,A每分钟限定调用10次,B每分钟限定调用30次,C每分钟调用不限制。
实现方法:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

package com.biao;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisDataException;

public class Service {
   private String id;
   private int num;
   public Service(String id,int num){
       this.id = id;
       this.num = num;
   }
   //控制单元
   public void service() {
       Jedis jedis = new Jedis("127.0.0.1", 6379);
       String value = jedis.get("compId" + id);
       //判断该值是否存在
       try {
           if (value == null) {
               //不存在,则创建该值
               jedis.setex("compId" + id, 10, Long.MAX_VALUE - num + "");
           } else {
               //存在则自增
               Long val = jedis.incr("compId" + id);
               business(id,num-(Long.MAX_VALUE-val));
           }
       } catch (JedisDataException e) {
           System.out.println("使用次数已经达到最大次数,请升级会员");
       } finally {
           jedis.close();
       }
   }
   
   //业务操作
   public void business(String id,Long val) {
       System.out.println("用户:"+id+",执行业务操作第"+val+"次");
   }

}


class MyThread extends Thread {
   Service sc ;
   public MyThread(String id,int num){
       sc = new Service(id,num);
   }
   @Override
   public void run() {
       while (true) {
           sc.service();
           //休眠1秒
           try {
               Thread.sleep(300L);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }

   }

}

//创建启动类
class Main {
   public static void main(String[] args) {
       MyThread mt1 = new MyThread("初级用户",10);
       mt1.start();
       MyThread mt2 = new MyThread("高级用户",30);
       mt2.start();
   }
}

这里可以自行设定睡眠时间和key存储时间,可以用随机数来设定睡眠时间来模拟用户调用。
这个demo里面就设计了2个用户,并且又可以完善的位置。比如业务方案可以模拟真实业务,可以将用户信息或者限制次数放在配置文件中,或者redis中。
在这里插入图片描述

1.所有的努力,不是为了让别人觉得你了不起,而是为了能让自己打心里看得起自己,人生的奔跑,不在于瞬间的爆发,取决于途中的坚持,你纵有千百个理由放弃,也要找一个理由坚持,能激励你,温暖你,感动你的,不是励志语录心灵鸡汤,而是身边比你优秀的人比你还努力!自勉!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章