Redis入門很簡單之六【Jedis常見操作】
<一>. 使用list:
可以使用列表模擬佇列(queue)、堆疊(stack),並且支援雙向的操作(L或者R)。
1. 右邊入隊:
- jedis.rpush("userList", "James");
2. 左邊出隊:右邊出棧(rpop),即為對堆疊的操作。
Java程式碼- jedis.lpop("userList");
3. 返回列表範圍:從0開始,到最後一個(-1) [包含]
Java程式碼-
List<String> userList = jedis.lrange("userList", 0
Redis的TopN操作,即使用list完成:lrange
4. 刪除:使用key
- jedis.del("userList");
5. 設定:位置1處為新值
Java程式碼- jedis.lset("userList", 1, "Nick Xu");
6. 返回長度:
Java程式碼- Long size = jedis.llen("userList");
7. 進行裁剪:包含
Java程式碼- jedis.ltrim("userList", 1, 2);
<二>. 使用set:和列表不同,集合中的元素是無序的,因此元素也不能重複。
1. 新增到set:可一次新增多個
- jedis.sadd("fruit", "apple");
- jedis.sadd("fruit", "pear", "watermelon");
- jedis.sadd("fruit", "apple");
2. 遍歷集合:
Java程式碼- Set<String> fruit = jedis.smembers("fruit");
3. 移除元素:remove
Java程式碼- jedis.srem("fruit", "pear");
4. 返回長度:
Java程式碼-
Long size = jedis.scard("fruit"
5. 是否包含:
Java程式碼- Boolean isMember = jedis.sismember("fruit", "pear");
6. 集合的操作:包括集合的交運算(sinter)、差集(sdiff)、並集(sunion)
Java程式碼- jedis.sadd("food", "bread", "milk");
- Set<String> fruitFood = jedis.sunion("fruit", "food");
<三>. 使用sorted set:有序集合在集合的基礎上,增加了一個用於排序的引數。
1. 有序集合:根據“第二個引數”進行排序。
- jedis.zadd("user", 22, "James");
2. 再次新增:元素相同時,更新為當前的權重。
Java程式碼- jedis.zadd("user", 24, "James");
3. zset的範圍:找到從0到-1的所有元素。
Java程式碼- Set<String> user = jedis.zrange("user", 0, -1);
4. 說明:我們可能還有一個疑慮,集合是怎麼做到有序的呢?
實際上,上述user的資料型別為java.util.LinkedHashSet
<四>. 使用hash:
1. 存放資料:使用HashMap
- Map<String, String> capital = new HashMap<String, String>();
- capital.put("shannxi", "xi'an");
- ...
- jedis.hmset("capital", capital);
2. 獲取資料:
Java程式碼- List<String> cities = jedis.hmget("capital", "shannxi", "shanghai");
<五>. 其他操作:
1. 對key的操作:
@ 對key的模糊查詢:
- Set<String> keys = jedis.keys("*");
- Set<String> keys = jedis.keys("user.userid.*");
@ 刪除key:
Java程式碼- jedis.del("city");
@ 是否存在:
Java程式碼- Boolean isExists = jedis.exists("user.userid.14101");
2. 失效時間:
@ expire:時間為5s
- jedis.setex("user.userid.14101", 5, "James");
@ 存活時間(ttl):time to live
Java程式碼- Long seconds = jedis.ttl("user.userid.14101");
@ 去掉key的expire設定:不再有失效時間
Java程式碼- jedis.persist("user.userid.14101");
3. 自增的整型:
@ int型別採用string型別的方式儲存:
- jedis.set("amount", 100 + "");
@ 遞增或遞減:incr()/decr()
Java程式碼- jedis.incr("amount");
@ 增加或減少:incrBy()/decrBy()
Java程式碼- jedis.incrBy("amount", 20);
4. 資料清空:
@ 清空當前db:
- jedis.flushDB();
@ 清空所有db:
Java程式碼- jedis.flushAll();
5. 事務支援:
@ 獲取事務:
- Transaction tx = jedis.multi();
@ 批量操作:tx採用和jedis一致的API介面
Java程式碼- for(int i = 0;i < 10;i ++) {
- tx.set("key" + i, "value" + i);
- System.out.println("--------key" + i);
- Thread.sleep(1000);
- }
@ 執行事務:針對每一個操作,返回其執行的結果,成功即為Ok
Java程式碼- List<Object> results = tx.exec();