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.所有的努力,不是爲了讓別人覺得你了不起,而是爲了能讓自己打心裏看得起自己,人生的奔跑,不在於瞬間的爆發,取決於途中的堅持,你縱有千百個理由放棄,也要找一個理由堅持,能激勵你,溫暖你,感動你的,不是勵志語錄心靈雞湯,而是身邊比你優秀的人比你還努力!自勉!

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