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搜尋一下官網。
結
下一節客戶端管理。