首先创建一个maven项目,将Jedisjar包引入其中。
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.9.0version>
dependency>
编写Jedis类:
public void testJedis() {
//1.连接Redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2.操作Redis
jedis.set("name", "lisi");
//3,关闭连接
jedis.close();
}
Jedis的操作和Redis控制台的命令操作是完全对应的,而在java中操作Redis,数据都会转成java中的数据类型展示。
public class JedisTest {
@Test
/**
* 操作List集合
*/
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");//添加到表尾
//获取数据
List<String> list1 = jedis.lrange("list1", 0, -1);//从表头取出
for (String s : list1) {
System.out.println(s);
}
System.out.println("-------------");
//获取列表长度
System.out.println(jedis.llen("list1"));
//3,关闭连接
jedis.close();
}
@Test
/**
* 操作Hash集合
*/
public void testHash() {
//1.连接Redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2.操作Redis
//添加数据
jedis.hset("hash", "a1", "b1");
jedis.hset("hash", "a2", "b2");
jedis.hset("hash", "a3", "b3");
//获取全部数据
Map<String, String> hash = jedis.hgetAll("hash");
System.out.println(hash);
System.out.println("---------------");
//获取哈希表中字段的数量
System.out.println(jedis.hlen("hash"));
//3,关闭连接
jedis.close();
}
}
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("您的体验次数已经用完,请充值会员!");
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);
}
@Override
public void run() {
while (true) {
sc.service();
try {
Thread.sleep(300l);
} 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();
}
}
创建好工具类在使用中就可以不用每次都创建Jedis了,使用是直接调用工具类即可。
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ResourceBundle;
public class RedisUtils {
//创建Redis连接池
private static JedisPool jp = null;
//创建Redis连接池配置
private static JedisPoolConfig jpc = 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"));
jpc = new JedisPoolConfig();
jpc.setMaxTotal(maxTotal);
jpc.setMaxIdle(maxIdle);
jp = new JedisPool(jpc, host, port);
}
/**
* 对外访问接口,提供Jedis连接对象,连接从连接池获取
*
* @return
*/
public static Jedis getJedis() {
return jp.getResource();
}
}
创建配置文件:
#Redis连接地址
redis.host=127.0.0.1
#Redis连接ID
redis.port=6379
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
redis.maxTotal=30
#最大等待连接中的数量,设 0 为没有限制
redis.maxIdle=10
Redis Desktop Manager