使用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     }
相關文章
相關標籤/搜索