Spring-Data之StringRedisTemplate-boundListOps方法描述

 

上篇文章已經介紹過對 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開頭的全部方法.

 

 

 

  1. right方法,對比left不一樣的在於,rightPush方法,是從數組的右邊進行壓棧

  2. 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下標中的元素

 

若是以爲好,請回復下,謝謝,

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索