Java 开发必看:Redis 客户端 Jedis 的核心用法与连接池配置

一、Jedis 基础操作

// 创建连接
try (Jedis jedis = new Jedis("localhost", 6379)) {
    // 字符串操作
    jedis.set("user:1001", "张三");
    String value = jedis.get("user:1001"); // 返回"张三"
    
    // 哈希操作
    jedis.hset("product:2001", "name", "手机");
    jedis.hset("product:2001", "price", "3999");
    
    // 列表操作
    jedis.lpush("task_queue", "task1", "task2");
}

二、连接池关键技术

连接池配置模板:

JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);          // 最大连接数
config.setMaxIdle(20);           // 最大空闲连接
config.setMinIdle(5);            // 最小空闲连接
config.setMaxWait(Duration.ofSeconds(3)); // 等待超时

try (JedisPool pool = new JedisPool(config, "localhost", 6379)) {
    try (Jedis jedis = pool.getResource()) {
        jedis.incr("page_view"); // 原子计数器
    }
}

三、核心参数解析

参数名 推荐值 作用说明
maxTotal 50-100 控制最大并发连接数
maxIdle 20-30 维持空闲连接降低创建开销
testOnBorrow true 获取连接时自动验证有效性
minEvictableIdleTime 30000ms 最小空闲回收时间(毫秒)

四、高级特性应用

Pipeline 批量操作:

try (Jedis jedis = pool.getResource()) {
    Pipeline p = jedis.pipelined();
    p.set("config:timeout", "30");
    p.incr("request_count");
    p.expire("cache:token", 3600);
    p.sync();  // 一次性提交所有命令
}

事务处理示例:

Transaction t = jedis.multi();
t.set("order:status", "created");
t.zadd("pending_orders", System.currentTimeMillis(), "order1001");
t.exec();  // 原子化执行

五、最佳实践建议

  1. 连接释放:始终使用try-with-resources确保连接关闭
  2. 异常处理:捕获JedisConnectionException处理网络异常
  3. 配置分离:将连接参数移至properties配置文件
  4. 心跳检测:定期执行ping()命令维持连接活性

性能提示:在高并发场景下,连接池maxTotal值应满足:
$$ maxTotal \geq \frac{峰值QPS}{单连接处理能力} $$

通过合理配置连接池参数,实测可提升3倍吞吐量。建议生产环境配置连接数监控,当waitCount持续增长时及时扩容。


附录:常用命令速查

  • 字符串:setex key seconds value(带过期时间)
  • 集合:sadd/smembers(无序集合)
  • 有序集合:zrangebyscore(范围查询)
  • 地理空间:geoadd/georadius(地理位置)

掌握这些核心技巧,可轻松应对日常开发中的缓存、会话管理、计数器等高频需求。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐