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

目录

[1. set key value](#1. set key value)

[2. get key](#2. get key)

[3. append key string](#3. append key string)

[4. strlen key](#4. strlen key)

[5. incr key 和 decr key](#5. incr key 和 decr key)

[6. incrby key num 和 decrby key num](#6. incrby key num 和 decrby key num)

[7. getrange key start end](#7. getrange key start end)

[8. setrange key start string](#8. setrange key start string)

[9. setex key time value](#9. setex key time value)

[10. setnx key value](#10. setnx key value)

[11. mset key1 value1 key2 value2 ...](#11. mset key1 value1 key2 value2 ...)

[12. mget key1 key2 ...](#12. mget key1 key2 ...)

[13. msetnx key1 value1 key2 value2 ...](#13. msetnx key1 value1 key2 value2 ...)

[14. getset key value](#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存在时则先返回原来的值,再用新值覆盖掉旧值。

相关推荐
十叶知秋2 分钟前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
瓜牛_gn2 小时前
mysql特性
数据库·mysql
奶糖趣多多3 小时前
Redis知识点
数据库·redis·缓存
CoderIsArt4 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
师太,答应老衲吧6 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
Channing Lewis7 小时前
salesforce case可以新建一个roll up 字段,统计出这个case下的email数量吗
数据库·salesforce
毕业设计制作和分享8 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
ketil278 小时前
Redis - String 字符串
数据库·redis·缓存
Hsu_kk9 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境9 小时前
第02章 MySQL环境搭建
数据库·mysql