1. 程式人生 > 其它 >redis 簡單整理——java 客戶端jedis[十六]

redis 簡單整理——java 客戶端jedis[十六]

前言

簡單介紹一下java客戶端jedis。

正文

Java有很多優秀的Redis客戶端(詳見:http://redis.io/clients#java),這 裡介紹使用較為廣泛的客戶端Jedis,本節將按照以下幾個方面對Jedis進行 介紹:

·Jedis的基本使用

·Jedis連線池使用

·Jedis中Pipeline使用

·Jedis的Lua指令碼使用

Jedis屬於Java的第三方開發包,在Java中獲取第三方開發包通常有兩種

方式:

·直接下載目標版本的Jedis-${version}.jar包加入到專案中。

·使用整合構建工具,例如maven、gradle等將Jedis目標版本的配置加入 到專案中。

通常在實際專案中使用第二種方式,但如果只是想測試一下Jedis,第 一種方法也是可以的。在寫本書時,Jedis最新發布的穩定版本2.8.2,以 Maven為例子,在專案中加入下面的依賴即可:

<dependency> 

<groupId>redis.clients</groupId> 

<artifactId>jedis</artifactId> 

<version>2.8.2</version> 

</dependency>

然後編寫程式碼:

public static void main(String[] args) {
	 //1. 生成一個Jedis物件,這個物件負責和指定Redis例項進行通訊
	Jedis jedis = new Jedis("127.0.0.1", 6379);
	// 2. jedis執行set操作
	jedis.set("hello", "world");
	// 3. jedis執行get操作, value="world"
	String value = jedis.get("hello");
        
        System.out.println(value);
}

一般時候如果是網路異常,那麼應該try catch 這種模式。

Jedis jedis = null; try {jedis = new Jedis("127.0.0.1", 6379); jedis.get("hello"); } catch (Exception e) { logger.error(e.getMessage(),e); } finally { if (jedis != null) { jedis.close(); } }

有些客戶端自帶了系列化工具,有些客戶端沒有,jedic就沒有,那麼需要自我找個庫進行解讀。

使用protostuff:

可以自我實現一下反序列化,自己百度官網。

上面我們看到一個問題就是redis 使用後,然後馬上關閉了,如果redis是高頻操作的話,那麼是很危險的。

因此生產環境中一般使用連線池的方式對Jedis連線進行管理,所有Jedis物件預先放在池子中(JedisPool),每次要連線Redis,只 需要在池子中借,用完了在歸還給池子.

另外直連的方式無法限制Jedis 物件的個數,在極端情況下可能會造成連線洩露,而連線池的形式可以有效 的保護和控制資源的使用。

Jedis提供了JedisPool這個類作為對Jedis的連線池,同時使用了Apache的 通用物件池工具common-pool作為資源的管理工具,下面是使用JedisPool操 作Redis的程式碼示例:

pipline 例子:

其他的如Lua指令碼可以jedis搜尋一下官網。

下一節客戶端管理。