企业级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直连
- 生成Jedsi对象
- Jedis执行命令
- 返回执行结果
- 关闭Jedis连接
Jedis连接池
- 从资源池调用Jedis对象。
- Jedis执行命令。
- 返回执行结果。
- 返回Jedis对象给连接池。
方案对比
Jedis连接池简单使用
- 引入JedisPool依赖的jar包。
- 创建JedisPool的相关相关配置。
// 设置连接池的相关参数配置
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
// 直接使用JedisPool,将使用配置传入
JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379);
- 调用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();
}