Redis字符串指令

文章目录

    • 键值对读写
    • 字符串操作
    • 数值操作

Redis系列:安装、初步使用⭐键指令

键值对读写

相对来说写入键值对要比读取稍微复杂一点,因为在写入的时候,可能准备写入的那个键已经存在了,下表中安全写入就为了应对这种情况,其功能是,只有当键不存在时,才执行写入操作;另一方面,也存在希望创建临时变量的情况,这时需要在创建时就指定一个过期时间

读取 写入 安全写入 临时变量
单值 get set setnx setEx/pSetEx
多组值 mget mset msetnx

下面对其中一些指令进行测试,首先用mset创建了三组键值对,然后用setnx创建a为"aaa",但显然失败了,说明在a已经存在的情况下,setnx无法再创建一个a;但使用set后设置成功了,说明set可以修改键对应的值。

127.0.0.1:6379> mset a "a" b "b" c "c"
OK
127.0.0.1:6379> mget a b c
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> setnx a "aaa"
(integer) 0
127.0.0.1:6379> get a
"a"
127.0.0.1:6379> set a "aaa"
OK
127.0.0.1:6379> get a
"aaa"

setEx和pSetEx的区别为,前者以秒为单位,后者以毫秒为单位,下面创建一个10秒的临时变量,10秒后再查看其剩余时间时,变量已经不在了。

127.0.0.1:6379> setex s10 10 "10s"
OK
127.0.0.1:6379> ttl s10
(integer) 5
127.0.0.1:6379> ttl s10
(integer) -2

最后,Redis还提供了一个一边更改一边返回的指令getset,其功能是一边设置新值,一边返回旧值

127.0.0.1:6379> getset a asdf
"aaa"
127.0.0.1:6379> get a
"asdf"

字符串操作

字符串,首先就是一个字符数组,那么一方面必有长度,另一方面也应该可以对字符进行索引,而且也应该支持字符串的拼接

127.0.0.1:6379> strlen str
(integer) 11
127.0.0.1:6379> set str test_string
OK
127.0.0.1:6379> getrange str 1 5
"est_s"
127.0.0.1:6379> append str "_tail"
(integer) 16
127.0.0.1:6379> get str
"test_string_tail"

最后,通过setRange可以指定偏移量修改key中字符串的内容

127.0.0.1:6379> setrange str 4 -
(integer) 16
127.0.0.1:6379> get str
"test-string_tail"
127.0.0.1:6379> setrange str 12 head
(integer) 16
127.0.0.1:6379> get str
"test-string_head"

数值操作

Redis中并没有数值,但可以把字符串解释为数值,从而也就有了数值操作指令,如下表所示。需要注意,其中只有incrByFloat可以操作浮点数,但其参数可以为负数

变化1 变化给定数值 变化给定浮点值
incr incrBy incrByFloat
decr decrBy

示例如下

127.0.0.1:6379> set num "15"
OK
127.0.0.1:6379> incr num
(integer) 16
127.0.0.1:6379> incrby num 20
(integer) 36
127.0.0.1:6379> incrbyfloat num 25.5
"61.5"
127.0.0.1:6379> decrby num "10.5"
(error) ERR value is not an integer or out of range
127.0.0.1:6379> incrbyfloat num -25.5
"36"
127.0.0.1:6379> incrbyfloat num "-25.5"
"10.5"

你可能感兴趣的:(数据库,redis,数据库,前端,键值对,字符串)