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);