Java 客戶端 Jedis和JedisPool 連線池

歷精圖治發表於2018-11-09

Jedis客戶端

jedis是java客戶端

jedis.set("helloword");
<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.9.0</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>
#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");

host:redis節點所在機器的IP
port:redis節點的埠

jedis.set("hello","world");
jedis.get("hello");
jedis.incr("counter");
//2:hash 
jedis.hset("myhash","f1","v1");
jedis.hset("myhash","f2","v2");
jedis.hgetAll("myhash");
//result: {f1=v1,f2=v2}
//3.List
jedis.rpush("mylist","1");
jedis.rpush("mylist","2");
jedis.rpush("mylist","3");
jedis.lrange("mylist",0,-1);
//4.set 
jedis.sadd("myset","a");
jedis.sadd("myset","b");
jedis.sadd("myset","a");
//輸出結果[b,a]
jedis.smembers("myset");
//5.zset 
jedis.zadd("myzset",99,"tom");
jedis.zadd("myzset",66,"peter");
jedis.zadd("myzset",33,"james");
//輸出結果[["james"],33.0,[["peter"],66.0],[["tom"],99.0]]
jedis.zrangeWithScores("myzset",0,-1);

Jedis 連線池使用:

  • Jedis直連
  • Jedis連線池
  • Jedis pool

Jedis直連

  1. 生成Jedis物件
  2. Jedis執行命令
  3. 返回執行結果
  4. 關閉Jedis連線

Jedis連線池

  1. 從資源池借Jedis物件
  2. Jedis執行命令
  3. 返回執行結果
  4. 歸還Jedis物件給連線池

方案對比

直連:簡單方便 適用於少量長期連線場景
缺點:存在每次新建關閉TCP開銷
Jedis物件不安全
連線池:Jedis預先生成,降低開銷使用
連線池的行是保護和控制資源的使用
缺點相對於直連 使用比較麻煩

Jedispool使用

初始化Jedis,通常來講JedisPool使用時單例的,

GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig ,"12.0.0.1",6379);
Jedis jedis = null ;
try{
   jedis = jedisPool.getResource();
}catch(Exception e ){
   e.printStackTrace;
}finally{
}

相關文章