Jedis的操作

Jedis 是 Redis 官方首選的 Java 客戶端開發包。
工作過程總結的一個示例,貼出來,如下:

Java代碼
package com.wujintao.redis;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
import redis.clients.jedis.SortingParams;

import com.wujintao.redis.util.RedisUtil;

public class TestCase {

/** 
 * 在不同的線程中使用相同的Jedis實例會發生奇怪的錯誤。但是創建太多的實現也不好因爲這意味着會建立很多sokcet連接, 
 * 也會導致奇怪的錯誤發生。單一Jedis實例不是線程安全的。爲了避免這些問題,可以使用JedisPool, 
 * JedisPool是一個線程安全的網絡連接池。可以用JedisPool創建一些可靠Jedis實例,可以從池中拿到Jedis的實例。 
 * 這種方式可以解決那些問題並且會實現高效的性能 
 */  

public static void main(String[] args) {  

    // ...when closing your application:  
    RedisUtil.getPool().destroy();  

}  

public static void Hello() {  
    Jedis jedis = RedisUtil.getJedis();  
    try {  
        // 向key-->name中放入了value-->minxr  
        jedis.set("name", "minxr");  
        String ss = jedis.get("name");  
        System.out.println(ss);  

        // 很直觀,類似map 將jintao append到已經有的value之後  
        jedis.append("name", "jintao");  
        ss = jedis.get("name");  
        System.out.println(ss);  

        // 2、直接覆蓋原來的數據  
        jedis.set("name", "jintao");  
        System.out.println(jedis.get("jintao"));  

        // 刪除key對應的記錄  
        jedis.del("name");  
        System.out.println(jedis.get("name"));// 執行結果:null  

        /** 
         * mset相當於 jedis.set("name","minxr"); jedis.set("jarorwar","aaa"); 
         */  
        jedis.mset("name", "minxr", "jarorwar", "aaa");  
        System.out.println(jedis.mget("name", "jarorwar"));  
    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        RedisUtil.getPool().returnResource(jedis);  
    }  

}  

private void testKey() {  
    Jedis jedis = RedisUtil.getJedis();  
    System.out.println("=============key==========================");  
    // 清空數據  
    System.out.println(jedis.flushDB());  
    System.out.println(jedis.echo("foo"));  
    // 判斷key否存在  
    System.out.println(jedis.exists("foo"));  
    jedis.set("key", "values");  
    System.out.println(jedis.exists("key"));  
}  

public static void testString() {  
    System.out.println("==String==");  
    Jedis jedis = RedisUtil.getJedis();  
    try {  
        // String  
        jedis.set("key", "Hello World!");  
        String value = jedis.get("key");  
        System.out.println(value);  
    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        RedisUtil.getPool().returnResource(jedis);  
    }  

    System.out.println("=============String==========================");  
    // 清空數據  
    System.out.println(jedis.flushDB());  
    // 存儲數據  
    jedis.set("foo", "bar");  
    System.out.println(jedis.get("foo"));  
    // 若key不存在,則存儲  
    jedis.setnx("foo", "foo not exits");  
    System.out.println(jedis.get("foo"));  
    // 覆蓋數據  
    jedis.set("foo", "foo update");  
    System.out.println(jedis.get("foo"));  
    // 追加數據  
    jedis.append("foo", " hello, world");  
    System.out.println(jedis.get("foo"));  
    // 設置key的有效期,並存儲數據  
    jedis.setex("foo", 2, "foo not exits");  
    System.out.println(jedis.get("foo"));  
    try {  
        Thread.sleep(3000);  
    } catch (InterruptedException e) {  
    }  
    System.out.println(jedis.get("foo"));  
    // 獲取並更改數據  
    jedis.set("foo", "foo update");  
    System.out.println(jedis.getSet("foo", "foo modify"));  
    // 截取value的值  
    System.out.println(jedis.getrange("foo", 1, 3));  
    System.out.println(jedis.mset("mset1", "mvalue1", "mset2", "mvalue2",  
            "mset3", "mvalue3", "mset4", "mvalue4"));  
    System.out.println(jedis.mget("mset1", "mset2", "mset3", "mset4"));  
    System.out.println(jedis.del(new String[] { "foo", "foo1", "foo3" }));  
}  

public static void testList() {  
    System.out.println("==List==");  
    Jedis jedis = RedisUtil.getJedis();  
    try {  
        // 開始前,先移除所有的內容  
        jedis.del("messages");  
        jedis.rpush("messages", "Hello how are you?");  
        jedis.rpush("messages", "Fine thanks. I'm having fun with redis.");  
        jedis.rpush("messages", "I should look into this NOSQL thing ASAP");  

        // 再取出所有數據jedis.lrange是按範圍取出,  
        // 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有  
        List<String> values = jedis.lrange("messages", 0, -1);  
        System.out.println(values);  

    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        RedisUtil.getPool().returnResource(jedis);  
    }  

    // 清空數據  
    System.out.println(jedis.flushDB());  
    // 添加數據  
    jedis.lpush("lists", "vector");  
    jedis.lpush("lists", "ArrayList");  
    jedis.lpush("lists", "LinkedList");  
    // 數組長度  
    System.out.println(jedis.llen("lists"));  
    // 排序  
    System.out.println(jedis.sort("lists"));  
    // 字串  
    System.out.println(jedis.lrange("lists", 0, 3));  
    // 修改列表中單個值  
    jedis.lset("lists", 0, "hello list!");  
    // 獲取列表指定下標的值  
    System.out.println(jedis.lindex("lists", 1));  
    // 刪除列表指定下標的值  
    System.out.println(jedis.lrem("lists", 1, "vector"));  
    // 刪除區間以外的數據  
    System.out.println(jedis.ltrim("lists", 0, 1));  
    // 列表出棧  
    System.out.println(jedis.lpop("lists"));  
    // 整個列表值  
    System.out.println(jedis.lrange("lists", 0, -1));  
}  

public static void testSet() {  
    System.out.println("==Set==");  
    Jedis jedis = RedisUtil.getJedis();  
    try {  
        jedis.sadd("myset", "1");  
        jedis.sadd("myset", "2");  
        jedis.sadd("myset", "3");  
        jedis.sadd("myset", "4");  
        Set<String> setValues = jedis.smembers("myset");  
        System.out.println(setValues);  

        // 移除noname  
        jedis.srem("myset", "4");  
        System.out.println(jedis.smembers("myset"));// 獲取所有加入的value  
        System.out.println(jedis.sismember("myset", "4"));// 判斷 minxr  
                                                            // 是否是sname集合的元素  
        System.out.println(jedis.scard("sname"));// 返回集合的元素個數  
    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        RedisUtil.getPool().returnResource(jedis);  
    }  

    // 清空數據  
    System.out.println(jedis.flushDB());  
    // 添加數據  
    jedis.sadd("sets", "HashSet");  
    jedis.sadd("sets", "SortedSet");  
    jedis.sadd("sets", "TreeSet");  
    // 判斷value是否在列表中  
    System.out.println(jedis.sismember("sets", "TreeSet"));  
    ;  
    // 整個列表值  
    System.out.println(jedis.smembers("sets"));  
    // 刪除指定元素  
    System.out.println(jedis.srem("sets", "SortedSet"));  
    // 出棧  
    System.out.println(jedis.spop("sets"));  
    System.out.println(jedis.smembers("sets"));  
    //  
    jedis.sadd("sets1", "HashSet1");  
    jedis.sadd("sets1", "SortedSet1");  
    jedis.sadd("sets1", "TreeSet");  
    jedis.sadd("sets2", "HashSet2");  
    jedis.sadd("sets2", "SortedSet1");  
    jedis.sadd("sets2", "TreeSet1");  
    // 交集  
    System.out.println(jedis.sinter("sets1", "sets2"));  
    // 並集  
    System.out.println(jedis.sunion("sets1", "sets2"));  
    // 差集  
    System.out.println(jedis.sdiff("sets1", "sets2"));  
}  

public static void sortedSet() {  
    System.out.println("==SoretedSet==");  
    Jedis jedis = RedisUtil.getJedis();  
    try {  
        jedis.zadd("hackers", 1940, "Alan Kay");  
        jedis.zadd("hackers", 1953, "Richard Stallman");  
        jedis.zadd("hackers", 1965, "Yukihiro Matsumoto");  
        jedis.zadd("hackers", 1916, "Claude Shannon");  
        jedis.zadd("hackers", 1969, "Linus Torvalds");  
        jedis.zadd("hackers", 1912, "Alan Turing");  
        Set<String> setValues = jedis.zrange("hackers", 0, -1);  
        System.out.println(setValues);  
        Set<String> setValues2 = jedis.zrevrange("hackers", 0, -1);  
        System.out.println(setValues2);  
    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        RedisUtil.getPool().returnResource(jedis);  
    }  

    // 清空數據  
    System.out.println(jedis.flushDB());  
    // 添加數據  
    jedis.zadd("zset", 10.1, "hello");  
    jedis.zadd("zset", 10.0, ":");  
    jedis.zadd("zset", 9.0, "zset");  
    jedis.zadd("zset", 11.0, "zset!");  
    // 元素個數  
    System.out.println(jedis.zcard("zset"));  
    // 元素下標  
    System.out.println(jedis.zscore("zset", "zset"));  
    // 集合子集  
    System.out.println(jedis.zrange("zset", 0, -1));  
    // 刪除元素  
    System.out.println(jedis.zrem("zset", "zset!"));  
    System.out.println(jedis.zcount("zset", 9.5, 10.5));  
    // 整個集合值  
    System.out.println(jedis.zrange("zset", 0, -1));  
}  

public static void testHsh() {  
    System.out.println("==Hash==");  
    Jedis jedis = RedisUtil.getJedis();  
    try {  
        Map<String, String> pairs = new HashMap<String, String>();  
        pairs.put("name", "Akshi");  
        pairs.put("age", "2");  
        pairs.put("sex", "Female");  
        jedis.hmset("kid", pairs);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章