前言

Jedis是Redis官方推荐的Java连接开发工具! 虽然现在的SpringBoot2.×版本已经将Jedis换成了Lettuce,但是我觉得还是有必要了解一下Jedis的使用!

  1. 如何在java项目中整合Jedis并且连接Redis数据库?
    ①创建一个Maven项目

    ②导入Jedis和fastjson依赖,耐心等待下载完成!

1
2
3
4
5
6
7
8
9
10
11
12
<!--导入jedis的包-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.23</version>
</dependency>

新版包可以去maven查询:

③连接Redis测试,此处为了方便测试,连接的是本地的Redis服务,连接远程需要更改配置文件和关闭防火墙。

1
2
3
4
// new Jedis 对象即可
Jedis jedis = new Jedis("127.0.0.1",6379);
// jedis 所有的命令就是我们之前的所有指令
System.out.println(jedis.ping());

返回PONG,证明连接成功!

④常用的API练习:

1
2
3
4
5
6
7
8
9
10
// new Jedis 对象即可
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.flushDB();//清空当前库的所有数据
jedis.set("name","yuanyuan");
jedis.set("age","23");
jedis.set("high","173");
System.out.println("name:"+jedis.get("name")+"\nage:"+jedis.get("age")+"\nhigh"+jedis.get("high"));
jedis.lpush("list","1","2","3","4");
System.out.println("list: "+jedis.lrange("list",0,-1));
jedis.close(); //关闭连接

事务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.set("name","liaojie");
jedis.set("age","23");
Transaction tx = jedis.multi();
try{
tx.set("name","yuanyuan");
// java 异常
int i = i / 0; // liaojie 23
// redis异常
//tx.incr("name"); // yuanyuan 24
tx.set("age","24");
tx.exec();
} catch(Exception e){
// 回滚
tx.discard();
} finally{
System.out.println("name:"+jedis.get("name")+"\nage:"+jedis.get("age"));
jedis.close();
}

使用连接池

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
JedisPool pool = new JedisPool("localhost", 6379);
// 连接sentinel
// Set<String> sentinels = new HashSet<>();
// sentinels.add("localhost:26379");
// sentinels.add("localhost:26380");
// sentinels.add("localhost:26381");
// JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels); // sentinel.conf里的集群名称:mymaster
try (Jedis jedis = pool.getResource()) {
jedis.set("clientName", "Jedis");
}
// or
JedisPooled jedis = new JedisPooled("localhost", 6379);

// 连接分布式
// Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
// jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
// jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7380));
// jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7381));
// JedisCluster jedis = new JedisCluster(jedisClusterNodes);

⑤总结:在Jedis中连接使用Redis,和Redis控制台命令完全一致,更多的命令可以自己敲一下,加深印象。