企业级Redis开发运维从入门到实践 (9)— Java客户端Jedis

Jedis是什么

Jedis就是一个基于Java的redis-cli,遵循Redis提供的协议请求Redis实现对其操作。

Maven依赖

Jedis的Maven依赖:

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
	<type>jar</type>
	<scope>compile</scope>
</dependency>

基于SpringBoot框架下,Redis的Maven依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Jedis直连

  • 生成一个Jedis对象,这个对象负责和指定Redis节点进行通信
Jedis jedis = new Jedis("127.0.0.1", 6379);
  • jedis执行set操作
jedis.set("hello", "world");
  • jedis执行get操作,value=“world”
String value = jedis.get("hello");

Jedis的构造函数中还有很多其他的参数,除了一下四种外还有很多其他的参数:

Jedis(String host, int port, int connectionTimeout, int soTimeout)
  • host:Redis节点的所在机器的IP。
  • port:Redis节点端口。
  • connectionTimeout:客户端连接超时。
  • soTimeout:客户端读写超时。

使用Jedis操作五种数据结构

string
// string类型写入数据,输出结果:OK
jedis.set("hello", "world");

// string类型读出数据,输出结果:world
jedis.get("hello");

// string类型自增操作,输出结果:1
jedis.incr("counter");
hash
// hash类型写入数据,输出结果:OK
jedis.hset("myhash", "f1", "v1");
jedis.hset("myhash", "f2", "v2");

//  hash类型读出数据,输出结果:{f1=v1, f2=v2}
jedis,hgetAll("myhash");
list
// list类型写入数据,输出结果:OK
jedis.rpush("mylist", "1");
jedis.rpush("mylist", "2");
jedis.rpush("mylist", "3");

//  list类型读出数据,输出结果:[1, 2, 3]
jedis.lrange("mylist", 0, -1);
set
// set类型写入数据,输出结果:OK
jedis.sadd("myset", "a");
jedis.sadd("myset", "b");
jedis.sadd("myset", "a");

// set类型读出数据,输出结果:[b, a]
jedis.smembers("myset");
zset
// zset类型写入数据,输出结果:OK
jedis.zadd("myzset", 99, "tom");
jedis.zadd("myzset", 66, "peter");
jedis.zadd("myzset", 33, "james");

// zset类型读出数据,输出结果:[[["james"], 33.0], [["peter"], 66.0], [["tom"], 99.0]]
jedis.zrangeWithScores("myzset", 0, -1);

Jedis连接池使用

Jedis直连

企业级Redis开发运维从入门到实践 (9)— Java客户端Jedis

  1. 生成Jedsi对象
  2. Jedis执行命令
  3. 返回执行结果
  4. 关闭Jedis连接
Jedis连接池

企业级Redis开发运维从入门到实践 (9)— Java客户端Jedis

  1. 从资源池调用Jedis对象。
  2. Jedis执行命令。
  3. 返回执行结果。
  4. 返回Jedis对象给连接池。
方案对比

企业级Redis开发运维从入门到实践 (9)— Java客户端Jedis

Jedis连接池简单使用
  1. 引入JedisPool依赖的jar包。
  2. 创建JedisPool的相关相关配置。
// 设置连接池的相关参数配置
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();

// 直接使用JedisPool,将使用配置传入
JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379);
  1. 调用JedisPool获取Jedis对象。
Jedis jedis = null;
try {
	// 1.从连接池获取jedis对象
	jedis = jedisPool.getResource();
	// 2.执行操作
	jedis.set("hello", "world");
} catch (Exception e) {
	e.printStackTrace();
} finally {
	if (jedis !=null)
	// 如果使用JedisPool,close操作不是关闭连接,代表归还连接池
	jedis.close();
}