redis学习-String类型的命令介绍以及特殊情况分析

    

目录

1. set key value

2. get key

3. append key string

4. strlen key

5. incr key 和 decr key

6. incrby key num 和 decrby key num

7. getrange key start end

8. setrange key start string

9. setex key time value

10. setnx key value 

11. mset key1 value1 key2 value2 ...

12. mget key1 key2 ...

13. msetnx key1 value1 key2 value2 ...

14. getset key value


        接下来的所有类型的操作中,-1都代表最后

        String类型适合存储字符串,用作计数器

1. set key value

        创建键值对,当再次set已经存在的key时会覆盖掉之前的value;并且set可以将任意类型的数据转换成一个string类型的数据,比如对一个list类型的list1使用set list1 abc可以将list替换为string类型的abc。

2. get key

        获取key对应的内容,仅对string类型的value使用。

3. append key string

        对指定key的value后添加其他信息,即对value的内容进行字符拼接;添加后会返回value的长度;如果不存在指定的key,那么就会创建一个并将string赋给value,相当于set。

4. strlen key

        查看指定key对应的value的长度。

5. incr key 和 decr key

        让指定键值对的value自增1;相反,decr key则是让指定键值对的value自减1。

6. incrby key num 和 decrby key num

        让指定键值对的value自增指定步长;相反,decrby key num则是让指定键值对的value自减指定步长。

        以上两类操作value的值必须是数字

7. getrange key start end

        获取指定键值对的指定部分的信息,该范围是闭区间,start和end设置为0和-1代表获取整个value。要注意的是,在截取时由于要构成一个区间,区间要求前面的数不能大于后面的数,所以start不能大于end;还有就是如果出现负数,那么会将这个负数处理成“字符串长度+负数”,所以-1代表末尾是因为字符串长度-1=最后一个字符的下标

        如果 start和end都大于最后一个字符的下标,那么就会截取到空串,因为只是end大于末尾下标时才会处理成末尾,start大于末尾下标时还是会按照真实位置计算

8. setrange key start string

        替换指定键值对的部分区间的信息,从指定位置start开始替换(start是下标,字符串是从0开始的),替换的长度和string的长度相同;当不存在该键值对时,它会创建一个键值对,并从start的位置开始将string赋值给value,然后前面的位置补上\x00。\x00中\是转义字符,也就是十六进制的0x00。返回的结果是执行完setrange操作后value的长度。

9. setex key time value

        setex为set+expire,当不存在指定key时会创建并赋值,当存在指定键值对时则会覆盖原来的value,set操作结束后设置过期时间;当对同一键值对执行多次setex操作时,后面的setex操作不仅会覆盖该键值对的value值,而且会重新设定过期时间。

10. setnx key value 

        setnx为set+notexists,仅当不存在key时才创建键值对,避免覆盖原有的键值对,在分布式锁中会经常用到。

11. mset key1 value1 key2 value2 ...

        同时执行多个set操作。

12. mget key1 key2 ...

        同时执行多个get操作。

13. msetnx key1 value1 key2 value2 ...

        同时执行多个setnx操作,但msetnx是一个原子性操作,要么一起成功,要么一起失败,所以如果有一个key已经存在,那么这个key对应的setnx操作不会执行,就会导致所有setnx操作不会执行,即如果有一个key已经存在那么msetnx操作无效;区别于mget,当key不存在时get会返回nil而不是不执行,所以是成功执行get操作。

14. getset key value

        先get后set,当key不存在时返回nil,并创建键值对;当key存在时则先返回原来的值,再用新值覆盖掉旧值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值