在java語言中使用redis需要兩個jar包,commons-pool-1.6.jar和jedis-2.1.0.jar。下面是對redis的5中數據類型的基本操作,使用Main方法實現,下篇blog會使用spring來集成redis。本地redis服務器啓動,默認配置端口6379。直接上代碼
package com.gyc.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class TestRedis {
private Jedis jedis;
@Before
public void setup() {
System.out.println("---------------------------------setup------------------");
// 連接redis服務器,127.0.0.1:6379
jedis = new Jedis("127.0.0.1", 6379);
}
/**
* redis存儲字符串
*/
@Test
public void testString() {
System.out.println("---------------------------------testString------------------");
// -----添加數據----------
jedis.set("name", "shuo");// 向key-->name中放入了value-->shuo
System.out.println(jedis.get("name"));// 執行結果:shuo
jedis.append("name", " hua"); // 拼接
System.out.println(jedis.get("name"));
jedis.del("name"); // 刪除某個鍵
System.out.println(jedis.get("name"));
// 設置多個鍵值對
jedis.mset("name", "geshuo", "age", "2", "add", "shanghai");
jedis.incr("age"); // 進行加1操作
System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("add"));
}
/**
* redis操作Map
*/
@Test
public void testMap() {
System.out.println("---------------------------------testMap------------------");
// -----添加數據----------
Map<String, String> map = new HashMap<String, String>();
map.put("name", "shuo");
map.put("age", "2");
map.put("add", "shanghai");
jedis.hmset("user", map);
// 取出user中的name,執行結果:[minxr]-->注意結果是一個泛型的List
// 第一個參數是存入redis中map對象的key,後面跟的是放入map中的對象的key,後面的key可以跟多個,是可變參數
List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
System.out.println(rsmap);
// 刪除map中的某個鍵值
jedis.hdel("user", "age");
System.out.println(jedis.hmget("user", "age")); // 因爲刪除了,所以返回的是null
System.out.println(jedis.hlen("user")); // 返回key爲user的鍵中存放的值的個數2
System.out.println(jedis.exists("user"));// 是否存在key爲user的記錄 返回true
System.out.println(jedis.hkeys("user"));// 返回map對象中的所有key
System.out.println(jedis.hvals("user"));// 返回map對象中的所有value
Iterator<String> iter = jedis.hkeys("user").iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println(key + ":" + jedis.hmget("user", key));
}
}
/**
* jedis操作List
*/
@Test
public void testList() {
System.out.println("---------------------------------testList------------------");
// 開始前,先移除所有的內容
jedis.del("javaEE");
System.out.println(jedis.lrange("javaEE", 0, -1));
// 先向key java中存放三條數據
jedis.lpush("javaEE", "spring");
jedis.lpush("javaEE", "struts");
jedis.lpush("javaEE", "ibatis");
// 再取出所有數據jedis.lrange是按範圍取出,
// 第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有
System.out.println(jedis.lrange("javaEE", 0, -1));
jedis.del("javaEE");
jedis.rpush("javaEE", "spring");
jedis.rpush("javaEE", "struts");
jedis.rpush("javaEE", "ibatis");
System.out.println(jedis.lrange("javaEE", 0, -1));
}
/**
* jedis操作Set
*/
@Test
public void testSet() {
System.out.println("---------------------------------testSet------------------");
// 添加
jedis.sadd("person", "aa");
jedis.sadd("person", "bb");
jedis.sadd("person", "cc");
jedis.sadd("person", "dd");
jedis.sadd("person", "ee");
// 移除noname
jedis.srem("person", "ee");
System.out.println(jedis.smembers("person"));// 獲取所有加入的value
System.out.println(jedis.sismember("person", "ee"));// 判斷 ee
// 是否是user集合的元素
System.out.println(jedis.srandmember("person"));
System.out.println(jedis.scard("person"));// 返回集合的元素個數
}
@Test
public void test() throws InterruptedException {
System.out.println("---------------------------------test------------------");
// jedis 排序
// 注意,此處的rpush和lpush是List的操作。是一個雙向鏈表(但從表現來看的)
jedis.del("a");// 先清除數據,再加入數據進行測試
jedis.rpush("a", "1");
jedis.lpush("a", "6");
jedis.lpush("a", "3");
jedis.lpush("a", "9");
System.out.println(jedis.lrange("a", 0, -1));// [9, 3, 6, 1]
System.out.println(jedis.sort("a")); // [1, 3, 6, 9] //輸入排序後結果
System.out.println(jedis.lrange("a", 0, -1));
}
}