Jedis简介
Java语言连接Redis服务:Jedis
Jedis常规操作
写一个程序使用redis
jedis基于maven的配置
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
测试jnuit的配置
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
测试jedis使用
package com.jzs;
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* @author zhongshun
* @date 2021/7/30 18:03
*/
public class JedisTest {
@Test
public void testJedis(){
//1、连接redis
Jedis jedis = new Jedis("127.0.0.1",6379);
//2、操作redis
jedis.set("name","zhongshun");
String name = jedis.get("name");
System.out.println(name);
//3、关闭连接
jedis.close();
}
}
运行结果
测试list
@Test
public void testList() {
//1、连接redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2、操作redis
jedis.lpush("list1", "a", "b", "c");
jedis.rpush("list1", "x", "y", "z");
List<String> list = jedis.lrange("list1", 0, -1);
for (String s : list) {
System.out.println(s);
}
System.out.println("从右边取出一个数据" + jedis.rpop("list1"));
//3、关闭连接
jedis.close();
}
测试hash
@Test
public void testHash() {
//1、连接redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2、操作redis
jedis.hset("hash1", "k1", "v1");
jedis.hset("hash1", "k2", "v2");
jedis.hset("hash1", "k3", "v3");
jedis.hset("hash1", "k4", "v4");
Map<String, String> map = jedis.hgetAll("hash1");
System.out.println(map);
//3、关闭连接
jedis.close();
}
Jedis工具类
jedis配置文件 redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.maxTotal=30
redis.maxIdle=10
工具类
package com.jzs.util;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ResourceBundle;
/**
* @author zhongshun
* @date 2021/7/30 23:46
*/
public class JedisUtils {
private static JedisPool jp = null;
private static String host = null;
private static int port;
private static int maxTotal;
private static int maxIdle;
static {
//加载配置文件
ResourceBundle rb = ResourceBundle.getBundle("redis");
host = rb.getString("redis.host");
port = Integer.parseInt(rb.getString("redis.port"));
maxTotal = Integer.parseInt(rb.getString("redis.maxTotal"));
maxIdle = Integer.parseInt(rb.getString("redis.maxIdle"));
JedisPoolConfig jpc = new JedisPoolConfig();
jpc.setMaxTotal(maxTotal); //最大连接数
jpc.setMaxIdle(maxIdle); //活动连接数
jp = new JedisPool(jpc, host, port);
}
public static Jedis getJedis() {
return jp.getResource();
}
}
Jedis案例
package com.jzs;
import com.jzs.util.JedisUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisDataException;
/**
* @author zhongshun
* @date 2021/7/30 23:14
*/
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);
Jedis jedis = JedisUtils.getJedis();
String value = jedis.get("compid" + id);
//判断该值是否存在
try {
if (value == null) {
//不存在,创建该值
jedis.setex("compid" + id, 5, Long.MAX_VALUE - num + "");
} else {
//存在,自增,调用业务
long val = jedis.incr("compid" + id);
business(id, num - (Long.MAX_VALUE - val));
}
} catch (JedisDataException e) {
System.out.println("使用次数已经达到上线,请升级会员级别");
return;
} 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);
}
public void run() {
while (true) {
sc.service();
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Main {
public static void main(String[] args) {
MyThread mt1 = new MyThread("初级用户", 10);
MyThread mt2 = new MyThread("高级用户", 30);
mt1.start();
mt2.start();
}
}