Jedis 是 Redis 官方推薦的 Java 客戶端,功能豐富、效能優異。本文涵蓋依賴引入、基本操作、連線池最佳實務、主從同步原理與配置。
推薦使用 Maven 管理:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> <type>jar</type> <scope>compile</scope> </dependency>
會自動引入 commons-pool2 作為連線池依賴。
Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
String value = jedis.get("foo");
jedis.close();
錯誤做法:多執行緒共用單一 Jedis 實例 → 非執行緒安全;每個執行緒建立獨立 Jedis → 連線耗盡。
正確做法:使用 JedisPool(執行緒安全、連線複用)。
// 初始化連線池
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
// 取得資源(Java 7+ try-with-resources 自動關閉)
try (Jedis jedis = pool.getResource()) {
jedis.set("key", "value");
System.out.println(jedis.get("key"));
}
// 應用關閉時銷毀連線池
pool.close(); // 或 pool.destroy()
testWhileIdle = true:空閒時檢測連線有效性minEvictableIdleTimeMillis = 60000:最小空閒驅逐時間 60 秒timeBetweenEvictionRunsMillis = 30000:驅逐檢測間隔 30 秒SYNC 命令方式一:配置檔(靜態,重啟生效)
slaveof 192.168.1.35 6379
方式二:命令動態修改(線上生效)
jedis.slaveOf("192.168.1.35", 6379);
// 取消原主從關係,自己變為 Master
jedis.slaveofNoOne();
// 其他 Slave 指向新 Master
jedis.slaveOf("192.168.1.36", 6379);