使用Jedis操作Redis-使用Java語言在客戶端操作---List類型


  在Redis中,List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不存在,Redis將為該鍵創建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那么該鍵也將會被從數據庫中刪除。List中可以包含的最大元素數量是4294967295。
  1   /**
  2      * List類型是按照插入順序排序的字符串鏈表。和數據結構中的普通鏈表一樣。我們可以在其頭部(left)和尾部(right)添加新的元素。
  3      * 在插入時,如果該鍵並不存在,Redis將為該鍵創建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那么該鍵也將會被從數據庫中刪除
  4      * @throws Exception
  5      */
  6     @Test
  7     public void testList() throws Exception {
  8         //在指定Key所關聯的List Value的頭部插入參數中給出的所有Values,返回插入的value值的個數
  9         Long lpushResult = jedis.lpush("lmykey", "a","b","c","d");//插入順序是先插入a,然后插入b,之后插入c,最后插入c
 10         System.out.println(lpushResult);//[d,c,b,a]
 11         
 12         //取從位置0開始到位置2結束的3個元素。
 13         List<String> lrangeResult = jedis.lrange("lmykey", 0, 2);//[d, c, b]
 14         
 15         //取鏈表中的全部元素,其中0表示第一個元素,-1表示最后一個元素。
 16         List<String> lrangeResult1 = jedis.lrange("lmykey", 0, -1);//[d, c, b, a]
 17         
 18         //插入元素,相當於追加。lmykey2鍵此時並不存在,因此該命令將不會進行任何操作,其返回值為0。
 19         Long lrangeRestult = jedis.lpushx("lmykey2", "e");//0
 20         
 21         //mykey鍵此時已經存在,所以該命令插入成功,並返回鏈表中當前元素的數量。
 22         Long lrangeResult2 = jedis.lpushx("lmykey", "e");//5
 23         
 24         //獲取該鍵的頭部元素
 25         System.out.println(jedis.lrange("lmykey", 0, 0));;//[e]
 26         
 27         
 28         //=======================>
 29         //插入元素
 30         jedis.lpush("lmykey2", "a","b","c","d");
 31         
 32         //彈出一個元素,返回彈出的那個元素
 33         String lrangeResult4 = jedis.lpop("lmykey2");//d
 34         
 35         //在執行lpop命令1次后,鏈表頭部的1個元素已經被彈出,此時鏈表中元素的數量是3
 36         //計算鏈表還有幾個元素
 37         Long lrangeResult5 = jedis.llen("lmykey2");//3
 38         
 39         
 40         //=========》
 41         jedis.lpush("lmykey3", "a","b","c","d","a","c");        
 42         
 43         //從頭部(left)向尾部(right)變量鏈表,刪除2個值等於a的元素,返回值為實際刪除的數量。
 44         Long lrangeResult6 = jedis.lrem("lmykey3", 2, "a");//2
 45         
 46         System.out.println(jedis.lrange("lmykey3", 0, -1));;//[c, d, c, b]
 47         
 48         //獲取索引值為1(頭部的第二個元素)的元素值. 索引是從0開始計數的
 49         String lindexValue = jedis.lindex("lmykey3", 1);//d
 50         
 51         //索引值6超過了鏈表中元素的數量,該命令返回null。
 52         String lindexValue7 = jedis.lindex("lmykey3", 6);//null
 53         
 54         //將索引值為1(頭部的第二個元素)的元素值設置為新值e。  如果成功,返回值為ok。
 55         String lset = jedis.lset("lmykey3", 1, "e");//ok
 56         
 57         //查看是否設置成功
 58         System.out.println(jedis.lindex("lmykey3", 1));//
 59         
 60         List<String> lrange = jedis.lrange("lmykey3", 0, -1);//[c, e, c, b]
 61         
 62         //設置的索引值6超過了鏈表中元素的數量,設置失敗,該命令返回錯誤信息
 63         String lset8 = jedis.lset("lmykey3", 6, "hh");
 64         //錯誤信息為:redis.clients.jedis.exceptions.JedisDataException: ERR index out of range
 65 
 66         //僅保留索引值0到2之間的3個元素,注意第0個和第2個元素均被保留。
 67         String ltrim = jedis.ltrim("lmykey3", 0, 2);
 68         System.out.println(jedis.lrange("lmykey3", 0, -1));//[c, e, c]
 69         
 70         //=======================>
 71         jedis.lpush("lmykey4", "a","b","c","d");
 72         //在a的前面插入新元素a1。
 73         Long linsert = jedis.linsert("lmykey4", LIST_POSITION.BEFORE, "a", "a1");
 74         System.out.println(jedis.lrange("lmykey4", 0, -1));//[d, c, b, a1, a]
 75         
 76         //在a的后面插入新元素a1,從返回結果表示插入之后該鏈表一共有幾個元素。如果在不存在的元素之前或之后插入新元素,該命令操作失敗,並返回-1。
 77         Long linsert9 = jedis.linsert("lmykey4", LIST_POSITION.AFTER, "a", "a1");
 78         System.out.println(linsert9);//6
 79         System.out.println(jedis.lrange("lmykey4", 0, -1));//[d, c, b, a1, a, a1]
 80         
 81         //為不存在的Key插入新元素,該命令操作失敗,返回0。
 82         Long linsert10 = jedis.linsert("lmykey123", LIST_POSITION.AFTER, "a", "a2");
 83         System.out.println(linsert10);//0
 84         
 85         
 86         //========>>
 87         //從鏈表的尾部插入參數中給出的values,插入順序是從右到左依次插入。
 88         jedis.rpush("rmykey", "a","b","c","d");
 89         System.out.println(jedis.lrange("rmykey", 0, -1));//[a, b, c, d]
 90         
 91         //該鍵已經存在並且包含4個元素,rpushx命令將執行成功,並將元素e插入到鏈表的尾部,返回插入成功之后該鏈表總共有幾個元素。
 92         Long rpushx = jedis.rpushx("rmykey", "e");
 93         System.out.println(jedis.lrange("rmykey", 0, -1));//[a, b, c, d, e]
 94         
 95         //由於rmykey2鍵並不存在,因此該命令不會插入數據,其返回值為0。
 96         Long rpushx11 = jedis.rpushx("rmykey2", "e");
 97         System.out.println(rpushx11);//0
 98         
 99         //將rmykey的尾部元素e彈出,同時再插入到rmykey2的頭部(原子性的完成這兩步操作)。
100         String rpoplpush = jedis.rpoplpush("rmykey", "rmykey2");
101         System.out.println(rpoplpush);//e
102         System.out.println(jedis.lrange("rmykey", 0, -1));//[a, b, c, d]
103         System.out.println(jedis.lrange("rmykey2", 0, -1));//[e]
104         
105         //將source和destination設為同一鍵,將mykey中的尾部元素移到其頭部。
106         String rpoplpush12 = jedis.rpoplpush("rmykey", "rmykey");
107         System.out.println(jedis.lrange("rmykey", 0, -1));//[d, a, b, c]
108         
109         System.out.println("ok");
110         //關閉連接
111         jedis.close();
112     }

 


免責聲明!

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



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