【Redis之String类型的详解&String类型中常用命令的实践】

Redis之String类型的讲解

上次我们分享了Redis中Value的五种基本类型以及Redis中常用的命令,这章我们来详细的学习一下Redis中的String数据类型

【Redis命令的基本使用实践、Redis的五种基本数据类型、各种常用的命令汇总】

Redis中String类型的命令

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的值并返回原来的旧值
mget批量获取值
mset批量设置值
setex设置key对应的value,同时设置过期时间,单位是秒
psetex设置key对应的value,同时设置过期时间,单位是毫秒
setnx只有在 key 不存在时设置 key 的值,set if not exists
msetnx兼具了mset和setnx的特性

set

设置key-value键值对的值。

127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set name temp
OK
127.0.0.1:6379> set name1 temp1
OK
127.0.0.1:6379> set name2 temp2
OK
127.0.0.1:6379> keys *
1) "name2"
2) "name1"
3) "name"
127.0.0.1:6379> 

在这里插入图片描述

get

先通过set设置,然后通过get获取key对应的value值。
如果 key 不存在时,返回 nil。
如果 key 不是字符串类型,那么返回一个错误。

127.0.0.1:6379> keys *
1) "name2"
2) "name1"
3) "name"
127.0.0.1:6379> get name
"temp"
127.0.0.1:6379> get name1
"temp1"
127.0.0.1:6379> get name2
"temp2"
127.0.0.1:6379> 

在这里插入图片描述

strlen命令

获取key对应的value的长度。

127.0.0.1:6379> keys *
1) "name2"
2) "name1"
3) "name"
127.0.0.1:6379> strlen name
(integer) 4
127.0.0.1:6379> strlen name1
(integer) 5
127.0.0.1:6379> 

在这里插入图片描述

append命令

如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key原来对应的value的值得末尾,如果key不存在直接创建新的key进行添加。

127.0.0.1:6379> keys *
1) "name2"
2) "name1"
3) "name"
127.0.0.1:6379> append name _zhangsan
(integer) 13
127.0.0.1:6379> get name
"temp_zhangsan"
127.0.0.1:6379> append value temp
(integer) 4
127.0.0.1:6379> keys *
1) "value"
2) "name2"
3) "name1"
4) "name"
127.0.0.1:6379> append sss
(error) ERR wrong number of arguments for 'append' command
127.0.0.1:6379> append s1 v1
(integer) 2
127.0.0.1:6379> keys *
1) "value"
2) "name2"
3) "name"
4) "name1"
5) "s1"
127.0.0.1:6379> 

在这里插入图片描述

incr命令

将 key 中储存的数字值加一,返回的结果就是加1后的结果。
如果 key 不存在,那么会先创建key的值,然后它的值被初始化为 0 ,然后再执行incr加1的操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

# 正常操作,返回正常加1的结果
127.0.0.1:6379> set age 16
OK
127.0.0.1:6379> get age 
"16"
127.0.0.1:6379> incr age
(integer) 17
127.0.0.1:6379> get age
"17"
# age1这个key不存在,先创建,初始化为0,加1的操作
127.0.0.1:6379> incr age1
(integer) 1
127.0.0.1:6379> get age1
"1"
# s1对应的value类型是string类型,不是int类型,直接报出错误
127.0.0.1:6379> incr s1
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

在这里插入图片描述

incrby命令

将 key 中储存的数字加指定的结果,返回的结果就是加了指定结果后的值,
如果 key 不存在,那么会先创建key的值,然后它的值被初始化为 0 ,然后再执行incr加指定值的操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> get age
"17"
127.0.0.1:6379> incrby age 3
(integer) 20
127.0.0.1:6379> incrby age2 5
(integer) 5
127.0.0.1:6379> incrby s1 3
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

在这里插入图片描述

incrbyfloat命令

将 key 中储存的数字加上指定浮点值的结果,返回的结果就是加了指定结果后的值,
如果 key 不存在,那么会先创建key的值,然后它的值被初始化为 0 ,然后再执行incr加浮点数值的操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> get age
"20"
127.0.0.1:6379> INCRBYFLOAT age 2.5
"22.5"
127.0.0.1:6379> INCRBYFLOAT age2 2.5
"7.5"
127.0.0.1:6379> get age3
(nil)
127.0.0.1:6379> INCRBYFLOAT age3 2.5
"2.5"
127.0.0.1:6379> INCRBYFLOAT s1 2.5
(error) ERR value is not a valid float
127.0.0.1:6379> 

在这里插入图片描述

decr

将 key 中储存的数字值减一,返回的结果就是减1后的结果。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行decr操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> keys *
1) "name2"
2) "age2"
3) "name1"
4) "value"
5) "age"
6) "age1"
7) "name"
8) "age3"
9) "s1"
127.0.0.1:6379> get age3
"2.5"
127.0.0.1:6379> set age4 7
OK
127.0.0.1:6379> decr age4
(integer) 6
127.0.0.1:6379> decr age4
(integer) 5
127.0.0.1:6379> decr age4
(integer) 4
127.0.0.1:6379> decr age4
(integer) 3
127.0.0.1:6379> decr age4
(integer) 2
127.0.0.1:6379> decr age4
(integer) 1
127.0.0.1:6379> decr age4
(integer) 0
127.0.0.1:6379> decr age4
(integer) -1
127.0.0.1:6379> decr age4
(integer) -2
127.0.0.1:6379> decr age5
(integer) -1
127.0.0.1:6379> decr s1
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

在这里插入图片描述

decrby命令

将 key 中储存的数字减指定的结果,返回的结果就是减去指定结果后的值。
如果 key 不存在,那么会先创建key的值,然后它的值被初始化为 0 ,然后再执行decr减指定值的操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

127.0.0.1:6379> decrby age4 7
(integer) -9
127.0.0.1:6379> get age4
"-9"
127.0.0.1:6379> decrby age5
(error) ERR wrong number of arguments for 'decrby' command
127.0.0.1:6379> decrby age6
(error) ERR wrong number of arguments for 'decrby' command
127.0.0.1:6379> keys *
 1) "name2"
 2) "age2"
 3) "age4"
 4) "name1"
 5) "value"
 6) "age"
 7) "age5"
 8) "age1"
 9) "name"
10) "age3"
11) "s1"
127.0.0.1:6379> decrby age12 7
(integer) -7
127.0.0.1:6379> decrby s1 8
(error) ERR value is not an integer or out of range
127.0.0.1:6379> 

在这里插入图片描述

getrange

获取value指定区间的值。
如果start<end,那么返回下标对应区间的值。
如果end<strart,返回""。
如果end足够大,大于key对应的value的长度,返回整个字符串的长度。
如果end等于-1,返回的也是整个字符串的长度。

127.0.0.1:6379> set str dfsafhsdkfhaskfhsjkafh
OK
127.0.0.1:6379> get str
"dfsafhsdkfhaskfhsjkafh"
127.0.0.1:6379> getrange str 0 3
"dfsa"
127.0.0.1:6379> getrange str 3 0
""
127.0.0.1:6379> getrange str 0 20
"dfsafhsdkfhaskfhsjkaf"
127.0.0.1:6379> getrange str 0 200
"dfsafhsdkfhaskfhsjkafh"
127.0.0.1:6379> getrange str 2 -1
"safhsdkfhaskfhsjkafh"

在这里插入图片描述

setrange命令

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

127.0.0.1:6379> setrange str 0 redis_string
(integer) 22
127.0.0.1:6379> get str
"redis_stringskfhsjkafh"
127.0.0.1:6379> setrange str 16 redis
(integer) 22
127.0.0.1:6379> get str
"redis_stringskfhredish"
127.0.0.1:6379> 

在这里插入图片描述

getset命令

获取设置key的值并返回原来的旧值

127.0.0.1:6379> getset name lisi
"temp_zhangsan"
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> 

在这里插入图片描述

mget命令

批量获取值

127.0.0.1:6379> keys *
 1) "name2"
 2) "age2"
 3) "age4"
 4) "str"
 5) "name1"
 6) "value"
 7) "age"
 8) "age5"
 9) "age1"
10) "name"
11) "age3"
12) "age12"
13) "s1"
127.0.0.1:6379> mget name name1 name2 age age1
1) "lisi"
2) "temp1"
3) "temp2"
4) "22.5"
5) "1"
127.0.0.1:6379> 

在这里插入图片描述

mset命令

批量设置值

127.0.0.1:6379> mget name name1 name2 age age1
1) "lisi"
2) "temp1"
3) "temp2"
4) "22.5"
5) "1"
127.0.0.1:6379> mset b1 v1 b2 v2 b3 v3 b4 v4
OK
127.0.0.1:6379> mget b1 b2 b3 b4
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> 

在这里插入图片描述

setex命令

设置key对应的value,同时设置过期时间,单位是秒。

127.0.0.1:6379> setex str1 25 value1
OK
127.0.0.1:6379> ttl str1
(integer) 20
127.0.0.1:6379> ttl str1
(integer) 18
127.0.0.1:6379> ttl str1
(integer) 17
127.0.0.1:6379> ttl str1
(integer) 11
127.0.0.1:6379> ttl str1
(integer) -2
127.0.0.1:6379> 

在这里插入图片描述

psetex命令

这个命令和 setex命令相似,但它以毫秒为单位设置 key 的生存时间。

127.0.0.1:6379> psetex str2 25 80
OK
127.0.0.1:6379> pttl str2
(integer) -2
127.0.0.1:6379> 

在这里插入图片描述

setnx命令

只有在 key 不存在时设置 key 的值,如果key存在,失败,返回0。

127.0.0.1:6379> keys *
 1) "b4"
 2) "name2"
 3) "name1"
 4) "age"
 5) "age5"
 6) "age1"
 7) "name"
 8) "age3"
 9) "b2"
10) "age2"
11) "age4"
12) "str"
13) "b1"
14) "value"
15) "b3"
16) "s1"
17) "age12"
127.0.0.1:6379> setnx ss vv
(integer) 1
127.0.0.1:6379> key*
(error) ERR unknown command `key*`, with args beginning with: 
127.0.0.1:6379> keys *
 1) "b4"
 2) "name2"
 3) "name1"
 4) "age"
 5) "age5"
 6) "age1"
 7) "name"
 8) "age3"
 9) "b2"
10) "age2"
11) "age4"
12) "str"
13) "b1"
14) "value"
15) "ss"
16) "b3"
17) "s1"
18) "age12"
127.0.0.1:6379> setnx name asd
(integer) 0
127.0.0.1:6379> 

在这里插入图片描述

msetnx命令

兼具了mset和setnx的特性,但是批量设置中只要有一个key存在,则所有的操作都失效。

127.0.0.1:6379> msetnx z1 v1 z2 v2 z3 v3
(integer) 1
127.0.0.1:6379> msetnx z1 v1 z4 v4 z5 v5
(integer) 0
127.0.0.1:6379> 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值