上篇文章已經介紹過對 boundValueOps 方法的介紹,下面是連接地址:java
http://www.javashuo.com/article/p-xaespwmj-do.htmlredis
上面有介紹須要的 jar包以及配置等數組
若是各位同窗不想看測試代碼,跟測試結果,能夠直接經過導航,進入到方法描述中,找你須要的方法描述
下面直接上測試代碼:緩存
--------------------------------分割線-----------------------------------------測試
Left開頭 方法的一些介紹,由於各方法條件不一,因此代碼我就拆分紅幾段來展現了,一塊兒展現會比較混亂,多處打印,會用 分割線來分割,表示不一樣方法的結果打印
測試代碼:spa
//先獲取 redis對value爲list的操做對象 BoundListOperations<String, String> listRedisTemplate = redisTemplate.boundListOps("hexiaowu"); //獲取key的名稱 String key = listRedisTemplate.getKey(); System.out.println("key:"+key); //左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); }
測試結果:.net
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
測試代碼:code
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } //左邊出棧,PS:這不是查詢,這是取出 String s = listRedisTemplate.leftPop(); System.out.println("list中,最左邊的value爲:"+s);
測試結果:對象
0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 list中,最左邊的value爲:5
測試代碼:blog
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //在list中第一個跟value同樣的值的左邊壓棧,若是有則返回在棧中的index,若是沒有這個value,則返回-1,不壓棧進入 Long value = listRedisTemplate.leftPush("1", "a"); System.out.println("leftPush返回結果:"+value); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); } System.out.println("---------------"); Long value1 = listRedisTemplate.leftPush("c", "C"); System.out.println("leftPush返回結果:"+ value1); List<String> range2 = listRedisTemplate.range(0, -1); for (int i = 0; i < range2.size(); i++) { System.out.println(i+"位置的value是:"+range2.get(i)); }
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 leftPush返回結果:7 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:a 4位置的value是:1 5位置的value是:2 6位置的value是:1 leftPush返回結果:-1 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:a 4位置的value是:1 5位置的value是:2 6位置的value是:1
測試代碼:
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //傳入多個參數,從右到左,往list裏面壓棧,而且返回list長度 Long aLong = listRedisTemplate.leftPushAll("a","b","c"); System.out.println("leftPushAll返回值="+aLong); List<String> range2 = listRedisTemplate.range(0, -1); for (int i = 0; i < range2.size(); i++) { System.out.println(i+"位置的value是:"+range2.get(i)); }
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 --------------- leftPushAll返回值=9 0位置的value是:c 1位置的value是:b 2位置的value是:a 3位置的value是:5 4位置的value是:4 5位置的value是:3 6位置的value是:1 7位置的value是:2 8位置的value是:1
測試代碼:
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //判斷list裏面是否有數據,若是有,則左邊壓棧,若是沒有,則不壓棧,而且返回0 Long value = listRedisTemplate.leftPushIfPresent("a"); System.out.println("leftPushIfPresent返回結果="+value); List<String> range3 = listRedisTemplate.range(0, -1); for (int i = 0; i < range3.size(); i++) { System.out.println(i+"位置的value是:"+range3.get(i)); } //刪除key,測試leftPushIfPresent方法 redisTemplate.delete(key); //判斷list裏面是否有數據,若是有,則左邊壓棧,若是沒有,則不壓棧,而且返回0 Long value1 = listRedisTemplate.leftPushIfPresent("a"); System.out.println("---------------"); System.out.println("leftPushIfPresent返回結果="+value1);
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 --------------- leftPushIfPresent返回結果=7 0位置的value是:a 1位置的value是:5 2位置的value是:4 3位置的value是:3 4位置的value是:1 5位置的value是:2 6位置的value是:1 --------------- leftPushIfPresent返回結果=0
測試代碼:
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //list最左邊數據,出棧,而且設定剩餘value的緩存時間 String s = listRedisTemplate.leftPop(1, TimeUnit.DAYS); System.out.println("leftPop返回結果="+s); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 --------------- leftPop返回結果=5 0位置的value是:4 1位置的value是:3 2位置的value是:1 3位置的value是:2 4位置的value是:1
Right開頭 方法的介紹,由於 right方法跟left方法基本一致,就不上代碼了,直接描述就行了
這就是 right開頭的全部方法.
right方法,對比left不一樣的在於,rightPush方法,是從數組的右邊進行壓棧
rightPop方法,是從數組的右邊進行出棧
以上,就是left跟right的不一樣,只是出入棧的順序不一樣而已,我就不上測試代碼了,有興趣的同窗,能夠本身測試一下,看看是不是跟我描述的一致
----------------------------我是華麗的分割線-------------------------------------
接下來,就是其餘方法的介紹了,畢竟不可能只有那麼幾個方法對吧!
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index5 = listRedisTemplate.leftPush("1"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //替換list中,在index下標位置的value listRedisTemplate.set(1,"a"); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1 --------------- 0位置的value是:5 1位置的value是:a 2位置的value是:3 3位置的value是:1 4位置的value是:2 5位置的value是:1
測試代碼:
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("5"); Long index1 = listRedisTemplate.leftPush("2"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); // 移除list中 count個value爲5的值,而且返回移除的數量, // 若是count爲0,或者大於list中爲value爲5數量的總和,那麼移除全部value爲5的值,而且返回移除數量 Long b = listRedisTemplate.remove(0, "5"); System.out.println("remove返回結果="+b); List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:2 4位置的value是:5 --------------- remove返回結果=2 0位置的value是:4 1位置的value是:3 2位置的value是:2
測試代碼:
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //返回list中,下標爲index的值,若是超過list長度,那麼返回null //若是傳入的是負數,會轉爲絕對值,若是負數的絕對值超過list的長度,也返回null String index5 = listRedisTemplate.index(1); System.out.println("index返回結果="+index5);
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:2 4位置的value是:1 --------------- index返回結果=4
測試代碼:
//左邊壓棧,而且返回在list中的下標 Long index = listRedisTemplate.leftPush("1"); Long index1 = listRedisTemplate.leftPush("2"); Long index2 = listRedisTemplate.leftPush("3"); Long index3 = listRedisTemplate.leftPush("4"); Long index4 = listRedisTemplate.leftPush("5"); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range = listRedisTemplate.range(0, -1); for (int i = 0; i < range.size(); i++) { System.out.println(i+"位置的value是:"+range.get(i)); } System.out.println("---------------"); //只保留list從start開始,到end結束位置的value,其他位置的value所有移除 listRedisTemplate.trim(1, 4); //查詢list從0開始,到index位的值,若是是-1,則表示查詢出來全部 List<String> range1 = listRedisTemplate.range(0, -1); for (int i = 0; i < range1.size(); i++) { System.out.println(i+"位置的value是:"+range1.get(i)); }
測試結果:
key:hexiaowu 0位置的value是:5 1位置的value是:4 2位置的value是:3 3位置的value是:2 4位置的value是:1 --------------- 0位置的value是:4 1位置的value是:3 2位置的value是:2 3位置的value是:1
剩餘一些其餘方法,在上篇文章中已經介紹過,在這就不介紹了,若是有沒看過上面文章的,這是跳轉地址,能夠去查看一下:http://www.javashuo.com/article/p-xaespwmj-do.html
----------------------------我是華麗的分割線-------------------------------------
→→→→→→boundListOps接口文檔在這
方法名稱 | 方法描述 |
List<V> range(long start, long end) |
從star位置開始獲取list到end位置的值,而且返回 |
void trim(long start, long end) |
保留從start到end截止位置的value,其他的,所有移除 |
Long size() |
獲取list的長度,而且返回長度 |
Long leftPush(V value) |
左邊壓棧,而且返回在list中的index |
Long leftPushAll(V... values) |
多參數左邊壓棧,參數位置也是從左往右入棧,而且返回list的長度 |
Long leftPushIfPresent(V value) |
檢查list內是否有value,若是有,從左邊壓棧,而且返回list長度,若是list內沒有元素,不入棧,而且返回0 |
Long leftPush(V pivot, V value) |
在list中從左往右第一個跟pivot同樣的值的左邊壓棧,而且返回list長度,若是沒有這個pivot,則返回-1,不入棧 |
Long rightPush(V value) |
從list右邊入棧,而且返回入棧後的index |
Long rightPushAll(V... values) |
多參數右邊入棧,參數位置也是從左往右入棧,而且返回list的長度 |
Long rightPushIfPresent(V value) |
檢查list內是否有value,若是有,從右邊入棧,而且返回list長度,若是list內沒有元素,不入棧,而且返回0 |
Long rightPush(V pivot, V value) |
在list中從右往左第一個跟pivot同樣的值的左邊壓棧,而且返回list長度,若是沒有這個pivot,則返回-1,不入棧 |
V leftPop() |
從list左邊開始出棧一位 |
V leftPop(long timeout, TimeUnit unit) |
從list左邊出棧一位,而且設定剩下元素的緩存時間 |
V rightPop() |
從右邊出棧一位 |
V rightPop(long timeout, TimeUnit unit) |
從右邊出棧一位,而且設定剩下元素的緩存時間 |
Long remove(long i, Object value) |
移除list中 count個value爲5的值,而且返回移除的數量, 若是count爲0,或者大於list中爲value爲5數量的總和,那麼移除全部value爲5的值,而且返回移除數量 |
V index(long index) |
返回list中,下標爲index的值,若是超過list長度,那麼返回null 若是傳入的是負數,會轉爲絕對值,若是負數的絕對值超過list的長度,也返回null |
void set(long index, V value) |
替換list中,在index下標中的元素 |
若是以爲好,請回復下,謝謝,
歡迎轉載,請註明出處跟做者,謝謝!