《Java 开发必看:Redis 客户端 Jedis 的核心用法与连接池配置》
·
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(); // 原子化执行
五、最佳实践建议
- 连接释放:始终使用try-with-resources确保连接关闭
- 异常处理:捕获JedisConnectionException处理网络异常
- 配置分离:将连接参数移至properties配置文件
- 心跳检测:定期执行
ping()命令维持连接活性
性能提示:在高并发场景下,连接池maxTotal值应满足:
$$ maxTotal \geq \frac{峰值QPS}{单连接处理能力} $$
通过合理配置连接池参数,实测可提升3倍吞吐量。建议生产环境配置连接数监控,当waitCount持续增长时及时扩容。
附录:常用命令速查
- 字符串:
setex key seconds value(带过期时间) - 集合:
sadd/smembers(无序集合) - 有序集合:
zrangebyscore(范围查询) - 地理空间:
geoadd/georadius(地理位置)
掌握这些核心技巧,可轻松应对日常开发中的缓存、会话管理、计数器等高频需求。
更多推荐
所有评论(0)