Redis操作字符串

这里使用的工程任然是前文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 互联网轻量级框架整合开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值