• Redis字符串操作命令合集(字符串增删改查命令)
  • 发布于 2个月前
  • 276 热度
    0 评论
在 Redis 中存储字符串,就是一个 key-value 的结构。其中,value 可以是字符串,也可以是数字,对于数字 Redis 会自动识别,且可以使用一些字符串没有的操作,比如增加、减少等。但在设置和存储的过程中,字符串和数字都是一样的使用方式。

1.字符串的增删改查
字符串的增删改查操作是 get、set、del。其中 set 操作可以是增加数据,也可以是更新数据。
接下来我们对 key 为 hello 的数据进行操作:
# 增加 hello 的值为 world
set hello world

# 获取 hello 的值
get hello

# 更新 hello 的值为 "new world"
set hello "new world"

# 删除 hello
del hello
2.set 操作数据的几种用法
前面介绍的 set,如果存在则更新,不存在则增加,如果我们想要实现存在 key 就更新,以及不存在 key 则创建的逻辑,可以如此操作:
不存在则设置,存在则不操作
setnx 可以实现我们这个逻辑:
if not exists:
    insert
else:
    pass
比如我们执行:
del a
setnx a 1
setnx a 2
上面的操作之后,尽管我们的 setnx 执行了两遍,但前面已经设置过了 a 的值,所以第二个操作不会执行了。

存在则更新,不存在则不操作
set key value xx,注意,xx 是固定用法,比如我们想 a 的值如果存在于系统,则更新 a 的值为 2,不存在的话则不操作,可以如下:
set a 2 xx
那么如果系统之前没有 a 的值存在,那么执行这个命令之后,系统也不会有 a 这个 key。

3.整数的操作
对于字符串类型的数据,可以存储字符串也可以存储整数,对于整数,有一些额外的操作,比如自增1,自减1,自增n,自减n。
incr 自增 1
# 为 a 初始化设置值为 3
set a 3

# 进行自增 1 的操作
incr a
decr 自减 1
decr a
注意:如果 incr 和 decr 的 key 之前在 Redis 中不存在,那么系统会默认先 set key 0,然后进行自增自减的操作

incrby 自增 n
# 对 a 进行自增 5
incrby a 5
decrby 自减 n
# 对 a 进行自减 5
decrby a 5

4.小数的操作
对应于整数,小数也可以进行自增的操作
incrbyfloat 自增某个小数
incrbyfloat a 3.4
但是,并没有相应的小数数自减操作,但是我们可以通过在 value 加负号来表示自减操作:
incrbyfloat a -3.4

5.字符串的范围操作
对于一个字符串,比如我们设置:
set a "this is a string"
getrange
我们通过 get 可以获取 a 的全量字符串,也可以通过 getrange 下标来指定范围获取:
getrange a 1 3
表示获取从 1 开始到 3 之间的字符串,下标从 0 开始。
setrange
也可以通过下标设置字符串内容:
setrange a 5 xxxx 
上面的操作表示将 a 字符串在第 6 个的位置的字符串替换成 xxxx,那么 a 的结果应该是:
get a 
# "this xxxx string"

6.字符串的字符操作
getset
先获取 key 的 value,然后对 key 设置新的 value:
getset a "new value"
append
将 value 追加到 key 的旧 value 的末尾:
set a "abc"
append a "def"
get a
# "abcdef"
strlen
获取字符串的长度:
strlen a
# 6
7.批量操作
mget
批量获取 key 列表的值,比如我们有 a,b,c 三个 key,我们想同时返回三个 key 的数据:
mget a b c
# 以下是返回:
#1) "abcdef"
#2) "1"
#3) "world"
mset
批量设置 key 列表的值,一个 key 后跟一个 value,比如我们设置三个 key,a、b、c 的 value 分别是 1,2,3:
mset a "1" b "2" c "3"

用户评论