Redis操作字串

來源:互聯網
上載者:User

這裡使用的工程任然是前文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 互連網輕量級架構整合開發

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.