Redis(五)-- Java API

 

1、pox.xml

<dependencies>	
    <dependency>	
        <groupId>redis.clients</groupId>	
        <artifactId>jedis</artifactId>	
        <version>2.9.0</version>	
    </dependency>	
    <dependency>	
        <groupId>org.apache.commons</groupId>	
        <artifactId>commons-pool2</artifactId>	
        <version>2.4.2</version>	
    </dependency>	
    <dependency>	
      <groupId>junit</groupId>	
      <artifactId>junit</artifactId>	
      <version>4.11</version>	
      <scope>test</scope>	
    </dependency>	
  </dependencies>

2、Java代碼,Jedis工具類

package om.xbq.redis;	
import java.util.List;	
import java.util.Set;	
import org.junit.Test;	
import redis.clients.jedis.Jedis;	
import redis.clients.jedis.JedisPool;	
import redis.clients.jedis.JedisPoolConfig;	
/**	
 * Jedis工具類	
 * @author xbq	
 * @created:2017-4-19	
 */	
public class JedisUtil {	
    private JedisPool pool;	
    private static String URL = "192.168.242.130";	
    private static int PORT = 6379;	
    private static String PASSWORD = "xbq123";	
    // ThreadLocal,給每一個線程 都弄一份 本身的資源	
    private final static ThreadLocal<JedisPool> threadPool = new ThreadLocal<JedisPool>();	
    private final static ThreadLocal<Jedis> threadJedis = new ThreadLocal<Jedis>();	
    private final static int MAX_TOTAL = 100;   // 最大分配實例	
    private final static int MAX_IDLE = 50;     // 最大空閒數	
    private final static int MAX_WAIT_MILLIS = -1; // 最大等待數	
    /**	
     * 獲取 jedis池	
     * @return	
     */	
    public JedisPool getPool(){	
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();	
        // 控制一個pool可分配多少個jedis實例,經過pool.getResource()來獲取,若是賦值爲-1,則表示不限制;	
        // 若是pool已經分配了maxActive個jedis實例,則此時pool的狀態爲exhausted(耗盡)	
        jedisPoolConfig.setMaxTotal(MAX_TOTAL);	
        // 控制一個pool最多有多少個狀態爲idle(空閒的)的jedis實例	
        jedisPoolConfig.setMaxIdle(MAX_IDLE);	
        // 表示當borrow(引入)一個jedis實例時,最大的等待時間,若是超過等待時間,則直接拋出JedisConnectionException	
        jedisPoolConfig.setMaxWaitMillis(MAX_WAIT_MILLIS);	
        final int timeout = 60 * 1000;	
        pool = new JedisPool(jedisPoolConfig, URL, PORT, timeout);	
        return pool;	
    }	
    /**	
     * 在jedis池中 獲取 jedis	
     * @return	
     */	
    private Jedis common(){	
        // 從 threadPool中取出 jedis鏈接池	
        pool = threadPool.get();	
        // 爲空,則從新產生 jedis鏈接池	
        if(pool == null){	
            pool = this.getPool();	
            // 將jedis鏈接池維護到threadPool中	
            threadPool.set(pool);	
        }	
        // 在threadJedis中獲取jedis實例	
        Jedis jedis = threadJedis.get();	
        // 爲空,則在jedis鏈接池中取出一個	
        if(jedis == null){	
            jedis = pool.getResource();	
            // 驗證密碼	
            jedis.auth(PASSWORD);	
            // 將jedis實例維護到threadJedis中	
            threadJedis.set(jedis);	
        }	
        return jedis;	
    }	
    /**	
     * 釋放資源	
     */	
    public void closeAll(){	
        Jedis jedis = threadJedis.get();	
        if(jedis != null){	
            threadJedis.set(null);	
            JedisPool pool = threadPool.get();	
            if(pool != null){	
                // 釋放鏈接,歸還給鏈接池	
                pool.returnResource(jedis);	
            }	
        }	
    }	
    /**	
     * 判斷key是否存在	
     * @param key	
     * @return	
     */	
    public boolean existsKey(String key){	
        Jedis jedis = this.common();	
        return jedis.exists(key);	
    }	
    /**	
     * 刪除	
     * @param key	
     * @return	
     */	
    public Long delValue(String key){	
        Jedis jedis = this.common();	
        return jedis.del(key);	
    }	
    // ----------------------------對String類型的操做-----------------------------------------	
    /**	
     * 增長  修改	
     * @param key	
     * @param value	
     */	
    public String setValue(String key, String value) {	
        Jedis jedis = this.common();	
        return jedis.set(key, value);	
    }	
    /**	
     * 查詢	
     * @param key	
     * @return	
     */	
    public String getValue(String key){	
        Jedis jedis = this.common();	
        return jedis.get(key);	
    }	
    /**	
     * 追加數據	
     * @param key	
     * @param value	
     */	
    public void appendValue(String key, String value){	
        Jedis jedis = this.common();	
        jedis.append(key, value);	
    }	
    /**	
     * 測試 String	
     */	
    @Test	
    public void testString(){	
        if(this.existsKey("name")){	
            System.out.println("這一個key存在了!");	
            this.appendValue("name", "xbq6666");	
            String name = this.getValue("name");	
            System.out.println("name===" + name);	
            long flag = this.delValue("name");	
            System.out.println(flag);	
        }else {	
            this.setValue("name", "javaCoder");	
            String name = this.getValue("name");	
            System.out.println("name===" + name);	
        }	
    }	
    // ----------------------------對List類型的操做------------------------------------------	
    /**	
     * 保存到鏈表	
     * @param key	
     * @param keys	
     * @return	
     */	
    public long lpush(String key, String ...keys){	
        Jedis jedis = this.common();	
        return jedis.lpush(key, keys);	
    }	
    /**	
     * 取出鏈表中的所有元素	
     * @param key	
     * @return	
     */	
    public List<String> lrange(String key) {	
        Jedis jedis = this.common();	
        return jedis.lrange(key, 0, -1);	
    }	
    /**	
     * 查詢出鏈表中的元素個數	
     * @param key	
     * @return	
     */	
    public long llen(String key){	
        Jedis jedis = this.common();	
        return jedis.llen(key);	
    }	
    /**	
     * 取出鏈表中的頭部元素	
     * @param key	
     * @return	
     */	
    public String lpop(String key){	
        Jedis jedis = this.common();	
        return jedis.lpop(key);	
    }	
    // ----------------------------對Hash類型的操做------------------------------------------	
    /**	
     * 添加	
     * @param key	
     * @param field	
     * @param value	
     * @return	
     */	
    public long hset(String key, String field, String value) {	
        Jedis jedis = this.common();	
        return jedis.hset(key, field, value);	
    }	
    /**	
     * 查詢	
     * @param key	
     * @param field	
     * @return	
     */	
    public String hget(String key, String field){	
        Jedis jedis = this.common();	
        return jedis.hget(key, field);	
    }	
    /**	
     * 判斷 key 中的field 是否存在	
     * @param key	
     * @param field	
     * @return	
     */	
    public boolean hexists(String key, String field){	
        Jedis jedis = this.common();	
        return jedis.hexists(key, field);	
    }	
    /**	
     * 刪除	
     * @param key	
     * @param fields	
     * @return	
     */	
    public long hdel(String key, String ...fields){	
        Jedis jedis = this.common();	
        return jedis.hdel(key, fields);	
    }	
    // ----------------------------對Set類型的操做--------------------------------------------	
    /**	
     * 添加元素	
     * @param key	
     * @param members	
     * @return	
     */	
    public long sadd(String key, String ...members){	
        Jedis jedis = this.common();	
        return jedis.sadd(key, members);	
    }	
    /**	
     * 查詢出set中的全部元素	
     * @param key	
     * @return	
     */	
    public Set<String> sMember(String key){	
        Jedis jedis = this.common();	
        return jedis.smembers(key);	
    }	
    /**	
     * 查詢出 set中元素的個數	
     * @param key	
     * @return	
     */	
    public long scard(String key){	
        Jedis jedis = this.common();	
        return jedis.scard(key);	
    }	
    // ----------------------------對ZSet類型的操做--------------------------------------------	
    /**	
     * 在zset中添加元素	
     * @param key	
     * @param score	
     * @param member	
     * @return	
     */	
    public long zadd(String key, double score ,String member){	
        Jedis jedis = this.common();	
        return jedis.zadd(key, score, member);	
    }	
    /**	
     * 查詢全部元素	
     * @param key	
     * @return	
     */	
    public Set<String> zrange(String key){	
        Jedis jedis = this.common();	
        return jedis.zrange(key, 0, -1);	
    }	
    /**	
     * 查詢zset中的元素個數	
     * @param key	
     * @return	
     */	
    public long zcard(String key){	
        Jedis jedis = this.common();	
        return jedis.zcard(key);	
    }	
    /**	
     * 刪除zset中的一個 或者多個元素	
     * @param key	
     * @param members	
     * @return	
     */	
    public long zrem(String key, String ...members){	
        Jedis jedis = this.common();	
        return jedis.zrem(key, members);	
    }	
}
相關文章
相關標籤/搜索