Redis是常用的高性能键值存储数据库,在缓存、会话管理等场景应用广泛,Jedis是Java生态中操作Redis的主流客户端。下面我们逐步学习Jedis相关的基础与实践内容。

一、Jedis基础使用
首先需要在项目中引入Jedis依赖,Maven项目的依赖配置如下:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.4.3</version>
</dependency>下面是基础的Jedis连接与操作示例,实现字符串类型的读写:
import redis.clients.jedis.Jedis;
public class JedisBasicDemo {
public static void main(String[] args) {
// 创建Jedis实例,连接本地Redis服务,默认端口6379
Jedis jedis = new Jedis("127.0.0.1", 6379);
// 验证密码,若Redis未设置密码可省略此步骤
// jedis.auth("your_redis_password");
System.out.println("连接Redis成功");
// 设置字符串键值
jedis.set("test_key", "hello_jedis");
// 获取键值
String value = jedis.get("test_key");
System.out.println("获取到的值:" + value);
// 关闭连接
jedis.close();
}
}二、JedisPool连接池使用
频繁的创建和销毁Jedis连接会消耗大量资源,生产环境中通常使用JedisPool管理连接。下面是JedisPool的配置与使用实例:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolDemo {
private static JedisPool jedisPool;
static {
// 配置连接池参数
JedisPoolConfig config = new JedisPoolConfig();
// 最大连接数
config.setMaxTotal(20);
// 最大空闲连接数
config.setMaxIdle(10);
// 最小空闲连接数
config.setMinIdle(5);
// 创建连接池,连接本地Redis
jedisPool = new JedisPool(config, "127.0.0.1", 6379);
}
public static void main(String[] args) {
// 从连接池获取Jedis连接
try (Jedis jedis = jedisPool.getResource()) {
// 执行操作
jedis.set("pool_key", "use_jedis_pool");
String value = jedis.get("pool_key");
System.out.println("连接池获取的值:" + value);
} catch (Exception e) {
e.printStackTrace();
}
}
}三、Jedis分布式实例
在分布式场景下,多个服务实例需要共享Redis连接配置,下面展示多实例共享JedisPool的使用方式,同时模拟简单的分布式计数场景:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class JedisDistributedDemo {
private static final JedisPool JEDIS_POOL;
static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(30);
config.setMaxIdle(15);
JEDIS_POOL = new JedisPool(config, "127.0.0.1", 6379);
}
// 分布式计数方法
public static void incrementCount(String key) {
try (Jedis jedis = JEDIS_POOL.getResource()) {
// 原子自增操作
Long count = jedis.incr(key);
System.out.println(Thread.currentThread().getName() + " 自增后的值:" + count);
}
}
public static void main(String[] args) {
// 模拟5个分布式服务实例并发调用
ExecutorService pool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++) {
int index = i;
pool.submit(() -> {
incrementCount("distributed_count");
});
}
pool.shutdown();
}
}四、注意事项
- 使用Jedis操作后务必关闭连接,避免连接泄漏,推荐使用try-with-resources语法
- JedisPool的配置参数需要根据实际业务并发量调整,避免连接数不足或资源浪费
- 分布式场景下涉及共享数据的操作,优先使用Redis的原子命令,避免并发问题
- 若Redis部署在远程服务器,需要确认防火墙开放对应端口,且配置合理的访问权限
通过上述实例,开发者可以快速掌握Jedis的基础使用、连接池管理和分布式场景下的实践方法,结合具体业务需求调整配置即可应用到实际项目中。