redis 常用操作


主要包括常用的列表(list)、集合(set)、有序集合(sorted set)、哈希表(hash)等數據結構,以及其他特性支持。

一、redis存儲字符串
 jedis.set("name","xinxin");//向key-->name中放入了value-->xinxin  
 jedis.append("name", " is my lover"); //拼接
 jedis.del("name");  //刪除某個鍵
 //設置多個鍵值對
 jedis.mset("name","liuling","age","23","qq","476777XXX");
 jedis.incr("age"); //進行加1操作

二、redis操作Map

//-----添加數據----------  
 Map<String, String> map = new HashMap<String, String>();
 map.put("qq", "123456");
 jedis.hmset("user",map);

//取出user中的name,執行結果:[minxr]-->注意結果是一個泛型的List  
 //第一個參數是存入redis中map對象的key,后面跟的是放入map中的對象的key,后面的key可以跟多個,是可變參數  
 List<String> rsmap = jedis.hmget("user", "name", "age", "qq");

//刪除map中的某個鍵值  
 jedis.hdel("user","age");

 //刪除map中的某個鍵值  
  jedis.hdel("user","age");
  jedis.hmget("user", "age")); //因為刪除了,所以返回的是null  
  jedis.hlen("user")); //返回key為user的鍵中存放的值的個數2 
  jedis.exists("user"));//是否存在key為user的記錄 返回true  
  jedis.hkeys("user"));//返回map對象中的所有key  
  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

可以使用列表模擬隊列(queue)、堆棧(stack),並且支持雙向的操作(L或者R)
//添加數據 jedis.lpush("java framework","spring"); //取出所有數據jedis.lrange是按范圍取出, //第一個是key,第二個是起始位置,第三個是結束位置,jedis.llen獲取長度 -1表示取得所有 jedis.lrange("java framework",0,-1) jedis.rpush("a", "1"); //右邊入隊列 jedis.lpush("a","6"); // 左邊入隊列 //注意,此處的rpush和lpush是List的操作。是一個雙向鏈表 //排序正序 jedis.sort("a")

//設置:位置1處為新值
jedis.lset("userList", 1, "Nick Xu");

 //返回長度:

Long size = jedis.llen("userList");

 //進行裁剪:包含

jedis.ltrim("userList", 1, 2);
 

四、jedis操作Set 

  集合中的元素是無序的,因此元素也不能重復。 
//添加 jedis.sadd("user","who"); //移除noname jedis.srem("user","who"); jedis.smembers("user"));//獲取所有加入的value jedis.sismember("user", "who"));//判斷 who 是否是user集合的元素 jedis.srandmember("user")); jedis.scard("user"));//返回集合的元素個數

  // 遍歷集合:

  Set<String> fruit = jedis.smembers("fruit");

  // 集合的操作:包括集合的交運算(sinter)、差集(sdiff)、並集(sunion)

  jedis.sadd("food", "bread", "milk");   Set<String> fruitFood = jedis.sunion("fruit", "food");
 

五、 sorted set:

有序集合在集合的基礎上,增加了一個用於排序的參數。 

// 1. 有序集合:根據“第二個參數”進行排序。

jedis.zadd("user", 22, "James");
// 2. 再次添加:元素相同時,更新為當前的權重。

jedis.zadd("user", 24, "James");
// 3. zset的范圍:找到從0到-1的所有元素。 
Set<String> user = jedis.zrange("user", 0, -1);
 // 4. 說明:我們可能還有一個疑慮,集合是怎么做到有序的呢? 實際上,上述user的數據類型為java.util.LinkedHashSet 

六、其他一些操作

//1. 對key的操作: // @ 對key的模糊查詢:

Set<String> keys = jedis.keys("*");
Set<String> keys = jedis.keys("user.userid.*");
// @ 刪除key: 
jedis.del("city");
// @ 是否存在:

Boolean isExists = jedis.exists("user.userid.14101");
// 2. 失效時間: // @ expire:時間為5s

jedis.setex("user.userid.14101", 5, "James");
// @ 存活時間(ttl):time to live

Long seconds = jedis.ttl("user.userid.14101");
 // @ 去掉key的expire設置:不再有失效時間 
jedis.persist("user.userid.14101");
// 3. 自增的整型: // @ int類型采用string類型的方式存儲: 
jedis.set("amount", 100 + "");
// @ 遞增或遞減:incr()/decr()

jedis.incr("amount");
 // @ 增加或減少:incrBy()/decrBy()

jedis.incrBy("amount", 20);
// 4. 數據清空: // @ 清空當前db: 
jedis.flushDB();
// @ 清空所有db:

jedis.flushAll();
// 5. 事務支持: // @ 獲取事務:

Transaction tx = jedis.multi();
 // @ 批量操作:tx采用和jedis一致的API接口 for(int i = 0;i < 10;i ++) {
     tx.set("key" + i, "value" + i); 
     System.out.println("--------key" + i);
     Thread.sleep(1000);  
}
 // @ 執行事務:針對每一個操作,返回其執行的結果,成功即為Ok

List<Object> results = tx.exec();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM