Spring-Data之StringRedisTemplate-boundValueOps方法描述

PS:第一次寫博客,排版可能不太好看,可能也有理解的偏差,但願你們指出來,共勉

            如下,均爲本身花費時間測試跟描寫,歡迎轉載,轉載請標明出處跟做者,我不但願本身的辛苦勞動被轉載並且還不標明做者跟出處,請尊重做者的勞動成果

                  並且,官方文檔,以及源碼,並無方法註釋,在文章最下面有我的對方法描述,都是我的描述,可能會有偏差,以及描述不當的地方,請見諒!

1.個人項目是maven項目,最近由於要用到,先引進下面兩個包 java

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.6.2</version>
</dependency>

 

2. 配置redis連接,由於spring-data集成了reids,咱們只須要在properties裏面配置數據庫鏈接等就OK了redis

spring.redis.host=redisIP
spring.redis.port=端口
spring.redis.pool.max-active=鏈接數
spring.redis.pool.max-idle=最大鏈接數
spring.redis.pool.min-idle=最小鏈接數
spring.redis.pool.max-wait=超時時間

 

3.StringRedisTemplate 是對redis數據庫操做的封裝模板,下圖,是咱們要使用模板的類關係spring

 

 

 

4.下面上測試代碼咯!數據庫

------------------------------分割線-------------------------------------------緩存

 

1.先獲取方法模板,可使用@autowired 自動注入app

String key = "hexiaowu";

		/**
		 * 先獲取redis對value的操做對象,須要先設定key
		 */
		BoundValueOperations<String, String> stringTemplate = redisTemplate.boundValueOps(key);

 

2.對value操做的模板,有不少方法,咱們下面一個一個來測試maven

set 方法spring-boot

有三個重載的方法,分別是幹嗎的呢,咱們來測試下吧測試

 

//賦值key
		stringTemplate.set("test");
		//獲取value
		String value = stringTemplate.get();
		System.out.println(key+"的值爲:"+value);
        
        //從value下標,第0位開始替換原有字符串
		stringTemplate.set("test1",0);
		String value1 = stringTemplate.get();
		System.out.println(key+"的值爲:"+value1);
        
        //從value下標,第1位開始替換原有字符
		stringTemplate.set("test2",1);
		String value2 = stringTemplate.get();
		System.out.println(key+"的值爲:"+value2);

        //從value下標第7位進行替換,若是超過原有字符串長度,差額中間補齊而且則將原有字符串跟新的進行拼接,
		stringTemplate.set("test3",7);
		String value3 = stringTemplate.get();
		System.out.println(key+"的值爲:"+value3);

        /**
		 * 設置value緩存時間 V value, long timeout, TimeUnit unit
		 * 	三個字段分別對應 value,緩存時間,緩存單位,例如天,小時等,具體的,看TimeUnit源碼,上面有描寫,這裏就不一一介紹了
		 */
		//設置超時時間爲1天
		stringTemplate.set("testTimeout",1, TimeUnit.DAYS);
		//獲取緩存時間,單位 秒
		Long expire = stringTemplate.getExpire();
		System.out.println(key+"的緩存時間爲:"+expire);

 

下面是測試結果:spa

hexiaowu的值爲:test
hexiaowu的值爲:test1
hexiaowu的值爲:ttest2
hexiaowu的值爲:ttest2test3
hexiaowu的緩存時間爲:86400

說明結果跟註釋描寫的一致,那接下來,咱們測試其餘方法咯

 

get 方法

 

 

下面是測試代碼:

//賦值key
		stringTemplate.set("test");
		//根據key獲取value的值
		String value = stringTemplate.get();
		System.out.println(key+"的值爲:"+value);

		//從 value 的下標開始截取字符串,從第一個參數開始,到第二個參數截止
		// 第一個參數不能小於0,若是小於0,則取出來的是個空字符串,
		// 第二個參數能夠大於value的長度,這樣,取出來的value就是完整的value,不會截取
		String value1 = stringTemplate.get(0, 1);
		System.out.println(key+"的值爲:"+value1);

		// 獲取原來的value,而且進行替換
		String modifyTest = stringTemplate.getAndSet("modifyTest");
		System.out.println(key+"的值爲:"+modifyTest);
		String value3 = stringTemplate.get();
		System.out.println(key+"的值爲:"+value3);

		//獲取value的緩存時間,單位:秒 -1表示永不超時
		Long expire = stringTemplate.getExpire();
		System.out.println(key+"的超時時間:"+expire);

		//獲取key值
		String key1 = stringTemplate.getKey();
		System.out.println(key+"的key值爲:"+key1);

		//獲取value的類型
		DataType type = stringTemplate.getType();
		System.out.println(value+"的類型爲:"+type);

		//獲取 RedisOperations 接口實現對象
		RedisOperations<String, String> operations = stringTemplate.getOperations();

 

測試結果:

hexiaowu的值爲:test
hexiaowu的值爲:te
hexiaowu的值爲:test
hexiaowu的值爲:modifyTest
hexiaowu的超時時間:-1
hexiaowu的key值爲:hexiaowu
test的類型爲:STRING

 

 

一些其餘方法測試,就直接貼測試代碼了

 

//賦值value
		stringTemplate.set("1");
		//設置 key的緩存時間
		// 能夠先添加對應的value,而後在設置緩存時間
		Boolean expire = stringTemplate.expire(1, TimeUnit.DAYS);
		System.out.println(key+"設置緩存時間是否成功:"+expire);
		//獲取緩存時間
		Long expire1 = stringTemplate.getExpire();
		System.out.println(expire1);



		//設置具體的到期時間,而且返回是否設置成功,例如,設定當天8點,8點後就會自動銷燬
		Boolean expireTime = stringTemplate.expireAt(new Date());
		System.out.println("是否設置成功:"+expireTime);
		//獲取剩餘過時時間
		Long expire3 = stringTemplate.getExpire();
		System.out.println("剩餘到期時間:"+expire3);

		//刪除key的到期時間,而且返回是否刪除成功
		Boolean persist = stringTemplate.persist();
		System.out.println("刪除key的緩存時間是否成功:"+persist);

		//獲取剩餘過時時間
		Long expire2 = stringTemplate.getExpire();
		System.out.println("key的緩存時間爲"+expire2);



		String value = stringTemplate.get();
		System.out.println("原來的value="+value+",長度爲:"+value.length());
		//在value值的基礎上進行追加添加,而且返回新的字符串長度
		Integer addComment = stringTemplate.append("2");
		String s = stringTemplate.get();
		System.out.println("新的value="+s+",新的字符串長度爲"+addComment);

		String value1 = stringTemplate.get();
		System.out.println("原來的value="+value1);
		//若是value 是number類型,增長value的值,如 12變爲 12+param,而且返回新的value
		// 方法重載,能夠傳遞2中參數,一個是 long還有一個是double,分別返回對應參數的類型 value
		Long increment = stringTemplate.increment(1);
		System.out.println("value增長參數後的值爲:"+increment);
		String s1 = stringTemplate.get();
		System.out.println("新的value="+s1);

		//獲取value的長度
		Long size = stringTemplate.size();
		System.out.println("value的長度爲"+size);

		//刪除key
		redisTemplate.delete(key);
		//若是key沒有設置value的話,那麼參數設置爲value
		Boolean asd = stringTemplate.setIfAbsent("123");
		System.out.println("新的value="+stringTemplate.get());

		System.out.println("舊的key爲:"+stringTemplate.getKey());
		//替換key的名稱
		stringTemplate.rename("newhexiaowu");
		System.out.println("新的key爲:"+stringTemplate.getKey());

 

接下來就是測試結果:

 

hexiaowu設置緩存時間是否成功:true
86400
是否設置成功:true
剩餘到期時間:36
刪除key的緩存時間是否成功:true
key的緩存時間爲-1
原來的value=1,長度爲:1
新的value=12,新的字符串長度爲2
原來的value=12
value增長參數後的值爲:13
新的value=13
value的長度爲2
新的value=123
舊的key爲:hexiaowu
新的key爲:newhexiaowu

 

以上就是本人測試的一些結果,可能會有一些出入什麼的,歡迎指正

 

 

BoundValueOperations 接口文檔,由於官方文檔並無對方法的描述,源碼裏面也沒有註釋,因此在下面增長一份方法做用描述.方法中的 V,K均爲String,你們能夠收藏文章保存,之後忘了,能夠進行查閱

方法名 方法描述
void set(V value) 設定key對應的vlaue值
void set(V value,long offset) 將value值從第offset位開始替換
                  void set(V value, long timeout, TimeUnit unit) 設置value的超時時間,timeout爲數字,unit爲單位,例如天,小時等
Boolean setIfAbsent(V value) 判斷key是否有對應的value,若是有,則返回false,若是沒有,添加,返回true
V get() 返回key對應的value
String get(long start, long end) 從start開始,到end結束,截取value的值
V getAndSet(V value) 替換value的值,而且返回value的舊值
Long increment(long delta) 若是value是數字類型的字符串,那麼增長delta,而且返回新的value
Double increment(double delta) 若是value是數字類型的字符串,那麼增長delta,而且返回新的value
Integer append(String value) 在value值後面進行添加,而且返回新value的長度
Long size() 返回value的長度
Boolean expire(long var1, TimeUnit var3) 設置key的緩存時間,var1爲數字,unit爲單位,例如天,小時等,返回是否設置成功
Boolean expireAt(Date var1) 設置key的具體到期時間,而且返回是否設置成功
Long getExpire() 返回key的剩餘緩存時間,單位:秒
K getKey() 返回key的名稱
DataType getType() 獲取key的類型
Boolean persist() 刪除key的緩存時間
void rename(K var1) 修改key的名稱

 

 

上面就是我本身測試的一些方法,下次測試對redis對List,Set等集合的操做.

 

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

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

相關文章
相關標籤/搜索