上篇文章我们大致介绍了Redis中的五大数据类型的简介,下面的几篇文章,我们作为详细的介绍五大数据类型的操作使用。
本文为Redis系列的第四篇文章,了解前面的文章更能有助于本文的理解:
Redis介绍–Linux系统下的安装(一)
Redis介绍–通用命令介绍(二)
Redis介绍–五大数据类型介绍(三)
String数据类型介绍
- 主要常用命令:
- set命令: 设置key的值
- get命令: 获取对应的key的值
- strlen命令: 获取key的值的长度
- append命令: 在原有的value的基础上追加内容
- incr命令: 将key存储的内容加1
- incrby命令: 将key存储的内容加指定的值
- incrbyfloat命令: 将key存储的内容累加一个float类型的数据
- decr命令: 将key存储的内容减1
- decrby命令: 将key存储的内容减去指定的值
- getrange命令: 截取value的值
- setrange命令: 修改value的部分内容,根据偏移量修改
- getset命令: 获取设置key的值并返回原来的旧值
- mset命令: 批量设置值
- mget命令: 批量获取值
- setex命令: 设置key对应的value,同时设置过期时间,单位是秒
- psetex命令: 设置key对应的value,同时设置过期时间,单位是毫秒
- setnx命令: 只有在 key 不存在时设置 key 的值,set if not exists
- msetnx命令: 兼具了mset和setnx的特性
主要常用命令:
set命令: 设置key的值
注意:
此命令,如果设置的key的值不是一个单词的话,需要加""
(双引号),否则报error。
127.0.0.1:6379> set address 深圳固戍
OK
127.0.0.1:6379> set sex 男 女
(error) ERR syntax error
127.0.0.1:6379> set sex "男 女"
OK
127.0.0.1:6379>
get命令: 获取对应的key的值
GET命令用于获取对应key的值,如果key不存在则返回nil
127.0.0.1:6379> get name
"zmf"
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379>
strlen命令: 获取key的值的长度
127.0.0.1:6379> strlen name
(integer) 3
127.0.0.1:6379>
append命令: 在原有的value的基础上追加内容
使用APPEND命令时,如果key已经存在,则会直接在value后追加值,如果key不存在,则会先创建一个value为空字符串的key,然后再追加:
127.0.0.1:6379> append k1 hello
(integer) 5
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379> append k1 Redis
(integer) 10
127.0.0.1:6379> get k1
"helloRedis"
127.0.0.1:6379>
incr命令: 将key存储的内容加1
INCR命令可以对指定key的value执行加1操作,如果指定的key不存在,那么在加1操作之前,会先将key的value设置为0,如果key的value不是数字,则会报错。如下:
127.0.0.1:6379> get age
"22"
127.0.0.1:6379> incr age
(integer) 23
127.0.0.1:6379> get age
"23"
127.0.0.1:6379> incr k2
(integer) 1
127.0.0.1:6379> get k2
"1"
127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
incrby命令: 将key存储的内容加指定的值
INCRBY和INCR功能类似,不同的是可以指定增长的步长,如下:
127.0.0.1:6379> get k2
"1"
127.0.0.1:6379> incrby k2 99
(integer) 100
127.0.0.1:6379> get k2
"100"
127.0.0.1:6379>
incrbyfloat命令: 将key存储的内容累加一个float类型的数据
INCRBYFLOAT命令可以用来增长浮点数,如下:
127.0.0.1:6379> get k2
"100"
127.0.0.1:6379> incrbyfloat k2 0.99
"100.99"
127.0.0.1:6379> get k2
"100.99"
127.0.0.1:6379>
decr命令: 将key存储的内容减1
DECR命令可以实现对value的减1操作,如果key不存在,则key对应的初始值会被置为0,如果key的value不为数字,则会报错;
127.0.0.1:6379> get age
"19"
127.0.0.1:6379> decr age
(integer) 18
127.0.0.1:6379> decr age1
(integer) -1
127.0.0.1:6379> get age1
"-1"
127.0.0.1:6379> decr name
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
decrby命令: 将key存储的内容减去指定的值
DECRBY和DECR类似,不同的时DECRBY命令可以指定步长,如下:
127.0.0.1:6379> get score
"100"
127.0.0.1:6379> decrby score 10
(integer) 90
127.0.0.1:6379> get score
"90"
127.0.0.1:6379>
getrange命令: 截取value的值
GETRANGE用来返回key所对应的value的子串,子串有start和end决定,从左往右计算,如果下标时负数,则从右往左计算,其中-1表示最后一个字符,-2时倒数第二个字符,…,如下:
127.0.0.1:6379> get k1
"helloRedis"
127.0.0.1:6379> getrange k1 0 2
"hel"
127.0.0.1:6379> getrange k1 -3 -1
"dis"
127.0.0.1:6379> getrange k1 0 -1
"helloRedis"
127.0.0.1:6379>
setrange命令: 修改value的部分内容,根据偏移量修改
用value参数覆写给定key所存储的字符串值,从偏移量offset开始
127.0.0.1:6379> get name
"hello world"
127.0.0.1:6379> setrange name 6 Redis
(integer) 11
127.0.0.1:6379> get name
"hello Redis"
127.0.0.1:6379>
getset命令: 获取设置key的值并返回原来的旧值
GETSET命令可以用来获取key所对应的value,并对key进行重置,如下:
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> getset age 22
"18"
127.0.0.1:6379> get age
"22"
127.0.0.1:6379>
mset命令: 批量设置值
MSET命令批量设置值
127.0.0.1:6379> mset m1 1 m2 2 m3 3 m4 4
OK
127.0.0.1:6379> mget m1 m2 m3 m4
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379>
mget命令: 批量获取值
MGET命令批量设置值
127.0.0.1:6379> mset m1 1 m2 2 m3 3 m4 4
OK
127.0.0.1:6379> mget m1 m2 m3 m4
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379>
setex命令: 设置key对应的value,同时设置过期时间,单位是秒
SETEX命令用来给key设置value,同时设置过期时间,等效于先给key设置value,再给key设置过期时间,如下:
127.0.0.1:6379> setex k3 30 v3
OK
127.0.0.1:6379> ttl k3
(integer) 25
127.0.0.1:6379> get k3
"v3"
127.0.0.1:6379>
psetex命令: 设置key对应的value,同时设置过期时间,单位是毫秒
PSETEX命令的作用和SETEX类似,不同的是,这里设置过期时间的单位为毫秒,如下:
127.0.0.1:6379> psetex k4 30000 v4
OK
127.0.0.1:6379> pttl k4
(integer) 25109
127.0.0.1:6379> get k4
"v4"
127.0.0.1:6379>
setnx命令: 只有在 key 不存在时设置 key 的值,set if not exists
SETNX命令是set if not exists 的简写,set 命令在执行的时候,如果key已经存在,则新值会覆盖掉旧值,而对于setnx命令,如果key已经存在,则不做任何操作,如果key不存在,则效果等同于set命令,如下:
注:如果setnx的可以是set后的key,则会覆盖掉旧值。
127.0.0.1:6379> get k4
"v4"
127.0.0.1:6379> setnx k4 vv
(integer) 1
127.0.0.1:6379> get k4
"vv"
127.0.0.1:6379> setnx k4 v4
(integer) 0
127.0.0.1:6379> get k4
"vv"
127.0.0.1:6379>
msetnx命令: 兼具了mset和setnx的特性
MSETNX兼具了SETNX和MSET的特性,但是MSETNX在执行时,如果有一个key存在,则所有的都不会执行,如下:
127.0.0.1:6379> msetnx k4 v4 k5 v5 k6 v6
(integer) 0
127.0.0.1:6379>
本文的STRING数据类型就介绍到这里,更多详情请参考官方手册:https://redis.io/commands#string