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