Java使用Jedis操作Redis

使用Java操作Redis需要jedis-2.7.3.jar

如果需要使用Redis連接池的話,還需commons-pool2-2.3.jar,下載地址:http://pan.baidu.com/s/1bp1FgM7

package com.henry.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisT {
	private Jedis jedis;
    private JedisPool jedisPool;//連接池
	
	// 初始化
    public RedisT(){
    	// 構造函數中初始化jedisPool
    	initialPool(); 
    	
        try {
            if (jedisPool != null) {
                jedis = jedisPool.getResource();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  
    /**
     * 初始化連接池
     */
    private void initialPool(){ 
        // 池基本配置 
        JedisPoolConfig config = new JedisPoolConfig(); 
        config.setMaxTotal(20); //可用連接實例的最大數目,默認值爲8;
        config.setMaxIdle(5);  //控制一個pool最多有多少個狀態爲idle(空閒的)的jedis實例,默認值也是8。
        config.setMaxWaitMillis(10000);  //等待可用連接的最大時間
        config.setTestOnBorrow(false); // 定時對線程池中空閒的鏈接進行validateObject校驗
        jedisPool = new JedisPool(config,"ip",6379); // redis默認 6379 
    }
    
    /**
     * 
     * @Title:        testString 
     * @Description:  測試java 操作redis中的String
     * @author        henry
     * @Date          2016-7-16 上午11:08:38
     */
    public void testString(){
    	System.out.println("======================start String=========================="); 
    	// 清空數據 
        System.out.println("清空庫中所有數據:"+jedis.flushDB());
    	jedis.set("name", "henry"); //向key-->name中放入了value-->henry  
    	System.out.println("獲取name鍵值對的值:"+jedis.get("name"));
    	System.out.println("執行對name鍵值對的值的拼接:"+jedis.append("name", " is my lover"));
    	System.out.println("獲取拼接後的name值:"+jedis.get("name"));
    	System.out.println("獲取name鍵值對的值:"+jedis.get("name")); 
    	System.out.println("刪除name鍵值對:"+jedis.del("name"));
    	System.out.println("獲取name鍵值對的值:"+jedis.get("name"));
    	//設置多個鍵值對
    	jedis.mset("name","henry","age","22");
    	System.out.println("獲取age鍵值對的值:"+jedis.get("age")); 
    	System.out.println("對age鍵值對進行+1:"+jedis.incr("age"));
    	System.out.println("獲取鍵值對的對應值:"+jedis.get("name") + "-" + jedis.get("age"));
    	
    	// 清空數據 
        System.out.println("清空庫中所有數據:"+jedis.flushDB());

        System.out.println("=============新增鍵值對時防止覆蓋原先值=============");
    	System.out.println("原name值不存在,新增name:"+jedis.setnx("name", "henry")); 
    	System.out.println("當name值存在時,測試新增name:"+jedis.setnx("name", "henry")); 
    	
    	System.out.println("=============超過有效期鍵值對被刪除=============");
    	System.out.println("新增age,並指定過期時間爲2秒"+jedis.setex("age", 2, "30"));
    	//等待3秒
    	try {
			Thread.sleep(3000);
		} catch (Exception e) {
			e.printStackTrace();
		}
    	System.out.println("3秒之後,獲取age對應的值:"+jedis.get("age"));
    	

    	System.out.println("獲取name舊值,並更新name新值:"+jedis.getSet("name", "hi henry")); 
    	System.out.println("獲取name新值:"+jedis.get("name")); 
    	System.out.println("======================end String=========================="); 
    	System.out.println();
    }
    
    /**
     * 
     * @Title:        testHash 
     * @Description:  測試java 操作redis中的Hash
     * @author        henry
     * @Date          2016-7-16 下午2:31:00
     */
    public void testHash(){
    	System.out.println("======================start Hash=========================="); 
    	 //清空數據 
        System.out.println("清空庫中所有數據:"+jedis.flushDB());
        System.out.println("user中添加name鍵值對:"+jedis.hset("user", "name", "henry")); 
        System.out.println("user中添加age鍵值對:"+jedis.hset("user", "age", "22")); 
        System.out.println("user中添加age鍵值對:"+jedis.hset("user", "sex", "男")); 
        System.out.println("user中的所有值:"+jedis.hgetAll("user"));
        System.out.println("user中的所有value值:"+jedis.hvals("user"));
        System.out.println("user中刪除sex鍵值對:"+jedis.hdel("user", "sex"));
        System.out.println("user中的所有值:"+jedis.hgetAll("user"));
        System.out.println("user整型鍵值的值增加10:"+jedis.hincrBy("user", "age", 10));
        System.out.println("user中的所有值:"+jedis.hgetAll("user"));
        
        System.out.println("user中的所有key:"+jedis.hkeys("user"));
        
    	System.out.println("======================end Hash==========================");  
    	System.out.println();
    }
    
    /**
     * @Title:        testList 
     * @Description:  測試java 操作redis中的List
     * @author        henry
     * @Date          2016-7-16 下午2:31:30
     */
    public void testList(){
    	System.out.println("======================start List=========================="); 
    	System.out.println("清空庫中所有數據:"+jedis.flushDB());

        System.out.println("list中添加鍵值對:"+jedis.lpush("list", "key1")); 
        System.out.println("list中添加鍵值對:"+jedis.lpush("list", "key2")); 
        System.out.println("list中添加鍵值對:"+jedis.lpush("list", "key3")); 
        System.out.println("list中添加鍵值對:"+jedis.lpush("list", "key4")); 
        System.out.println("list中添加鍵值對:"+jedis.lpush("list", "key5")); 
        System.out.println("list中添加鍵值對:"+jedis.lpush("list", "key6")); 
        System.out.println("查詢list中所有鍵值對:"+jedis.lrange("list", 0, -1)); 
        System.out.println("刪除list指定元素:"+jedis.lrem("list", 2, "key2")); 
        System.out.println("查詢list中刪除後的所有鍵值對:"+jedis.lrange("list", 0, -1)); 
        System.out.println("刪除下標0-3區間之外的元素:"+jedis.ltrim("list", 0, 3));
        System.out.println("刪除指定區間之外元素後的list:"+jedis.lrange("list", 0, -1));
        
        System.out.println("出棧元素:"+jedis.lpop("list")); 
        System.out.println("元素出棧後-list:"+jedis.lrange("list", 0, -1));
        System.out.println("長度-list:"+jedis.llen("list"));
        System.out.println("獲取下標爲2的元素:"+jedis.lindex("list", 2));
    	System.out.println("======================end List==========================");  
    	System.out.println();
    }
    
    /**
     * @Title:        testSet 
     * @Description:  測試java 操作redis中的Set
     * @author        henry
     * @Date          2016-7-16 下午2:31:50
     */
    public void testSet(){
    	System.out.println("======================start set=========================="); 
    	System.out.println("清空庫中所有數據:"+jedis.flushDB());
    	
    	System.out.println("向sets中加入元素:"+jedis.sadd("sets", "key7"));
    	System.out.println("向sets中批量加入元素:"+jedis.sadd("sets", "key1","key2","key3","key4","key5","key6"));
    	System.out.println("查詢sets中的所有數據:"+jedis.smembers("sets"));
    	System.out.println("刪除sets中指定的數據:"+jedis.srem("sets", "key7"));
    	System.out.println("查詢sets中的所有數據:"+jedis.smembers("sets"));
    	System.out.println("批量刪除sets中指定的數據:"+jedis.srem("sets", "key5","key6"));
    	System.out.println("查詢sets中的所有數據:"+jedis.smembers("sets"));
    	
    	System.out.println("======================set計算=========================="); 
    	System.out.println("向sets1中批量加入元素:"+jedis.sadd("sets1", "key4","key5","key6","key7","key8","key9"));
    	System.out.println("查詢sets1中的所有數據:"+jedis.smembers("sets1"));
    	System.out.println("sets和sets1交集:"+jedis.sinter("sets", "sets1"));
        System.out.println("sets和sets1並集:"+jedis.sunion("sets", "sets1"));
        System.out.println("sets和sets1差集:"+jedis.sdiff("sets", "sets1"));
    	System.out.println("======================end set==========================");  
    	System.out.println();
    }
    
    /**
     * @Title:        testZset 
     * @Description:  測試java 操作redis中的Zset
     * @author        henry
     * @Date          2016-7-16 下午2:32:21
     */
    public void testZset(){
    	System.out.println("======================start zset=========================="); 
    	System.out.println("清空庫中所有數據:"+jedis.flushDB());
    	System.out.println("向zsets中加入元素:"+jedis.zadd("zsets", 1, "key1"));
    	System.out.println("向zsets中加入元素:"+jedis.zadd("zsets", 2, "key2"));
    	System.out.println("向zsets中加入元素:"+jedis.zadd("zsets", 3, "key3"));
    	System.out.println("向zsets中加入元素:"+jedis.zadd("zsets", 5, "key5"));
    	System.out.println("向zsets中加入元素:"+jedis.zadd("zsets", 4, "key4"));
    	System.out.println("查詢zsets中所有值:"+jedis.zrange("zsets", 0, -1));
    	System.out.println("刪除zsets中的指定值:"+jedis.zrem("zsets", "key2"));
    	System.out.println("查詢zsets刪除元素後的所有值:"+jedis.zrange("zsets", 0, -1));
    	System.out.println("長度-zset:"+jedis.zcard("zsets"));
    	System.out.println("======================end zset==========================");  
    	System.out.println();
    }

    public static void main(String[]args){
		RedisT redisT = new RedisT();
		redisT.testString();
		redisT.testHash();
		redisT.testList();
		redisT.testSet();
		redisT.testZset();
	}
}


發佈了51 篇原創文章 · 獲贊 31 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章