這裡使用的工程任然是前文SpringBoot對非關係型資料庫NoSql的支援,只不過此處使用了遠程伺服器上的Redis伺服器 RedisTemplete和StringRedisTemplete的區別
在這一篇文章中我們也分別嘗試過RedisTemplete和StringRedisTemplete來作為操作資料的工具類,但是,我們並沒有說明他們的區別,因此下面我們將嘗試區分兩者在操作資料的時候區別,代碼如下
@Resource RedisTemplate redisTemplate; @Resource StringRedisTemplate stringRedisTemplate; @RequestMapping("/stringOps") public void stringOps(){ redisTemplate.opsForValue().set("key1","value1"); stringRedisTemplate.opsForValue().set("key2","value2"); } @RequestMapping("getValue") public void getValue(){ String value1 = stringRedisTemplate.opsForValue().get("key1"); String value2 = (String) redisTemplate.opsForValue().get("key2"); System.out.println(value1); System.out.println(value2); }
運行結果如圖所示
從可視化介面和代碼中都可以看出StringRedisTemplete是確定的為字串操作的工具類,而RedisTemplete不僅可以操作String,還可以操作Redis中的其他資料結構。 Redis字串操作 1.刪除
@RequestMapping("del") public void del(){ stringRedisTemplate.delete("key2"); }
從這裡我們也可以看到上文RedisTemplete針對字串的操作,這裡我們也可以利用更小粒度的StringRedisTemplete去操作。 2.設定新值並返回舊值
@RequestMapping("getAndSet") public void getAndSet(){ String oldValue = stringRedisTemplate.opsForValue().getAndSet("key1","new_value1"); System.out.println(oldValue); }
可以看到控制台輸出了我們之前設定的value1的值,
可視化介面中顯示key1的值已經被設定成new_value1
3.求字串長度
代碼
@RequestMapping("length") public void length(){ Long length = stringRedisTemplate.opsForValue().size("key1"); System.out.println(length); Long length2 = stringRedisTemplate.opsForValue().size("key2"); System.out.println(length2); }
可以看到控制台輸出了10和0,由此可以得知,當擷取Redis中不存在的key值時也是可以的,但是此時的長度為0。 4.擷取字串長度內某個範圍的值
@RequestMapping("getRange") public void getRange(){ String str1 = stringRedisTemplate.opsForValue().get("key1",0,3); System.out.println(str1); String str2 = stringRedisTemplate.opsForValue().get("key1",15,20); System.out.println(str2); }
這裡我們選取了超出字串長度之外的索引,可以看到控制台,有如下輸出
從這裡我們得知,擷取超過字串長度的字元時,會返回空。而不是null 5.追加字串到原字串末尾
@RequestMapping("append") public void append(){ Integer length = stringRedisTemplate.opsForValue().append("key1","_append"); System.out.println(length); }
控制台中輸出17。即添加了字元之後的長度
上述只是對Redis諸多操作方法中最常用的幾種做了嘗試,大家可以去嘗試更多的api 6.Redis對整型或者浮點型資料的簡單計算
Redis的計算能力較弱,目前只能針對浮點數或者整數做一些簡單的計算,例如 6.1 Redis針對整數和浮點數的加法
@RequestMapping("intOps") public void intOps(){ stringRedisTemplate.opsForValue().set("i","9"); stringRedisTemplate.opsForValue().increment("i",10); stringRedisTemplate.opsForValue().set("f","9.0"); stringRedisTemplate.opsForValue().increment("f",10.0); }
可以在視覺化檢視中看到Redis進行了加法運算,顯示19和19.1
我們依然可以嘗試一下整型和浮點型之間是否可以進行混合的加法運算,有如下代碼
stringRedisTemplate.opsForValue().increment("i",10.0); stringRedisTemplate.opsForValue().increment("f",10);
可以在視覺化檢視中看到,所有的資料均為29,並沒有顯示29.0。這裡的具體Redis進行了什麼操作,我們並不深究,我們可以探索到Redis是支援整型和浮點型混合運算的
參考書:JavaEE 互連網輕量級架構整合開發