Redis从入门到入坟系列文章(二): 字符串(String)

我们知道Redis常用的数据类型有五种:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。今天就过一遍String相关的命令。

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value,string 类型的值最大能存储 512MB。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

使用String命令,跟KEYS命令的语法一样,都是COMMAND key_name。常用的命令如下:

1、SET key value:创建一个key,并制定key的值为value

127.0.0.1:6379> SET runkey redis
OK

2、GET key:获取指定 key 的值

127.0.0.1:6379> GET runkey
"redis"

3、GETRANGE key start end:返回 key 中字符串值的子字符

这里要注意的是,该命令跟我们java里的substring有点不一样,这里假设字符串的长度为length,从左到右的下标和我们常用的一样,就是0到length-1;但是该命令可以反过来截取字符串,从右到左的下标为-1到-length。我们以刚才创建的runkey为例,GETRANGE runkey 0 4 和GETRANGE runkey 0 -1,返回的结果应该都是“redis”。

127.0.0.1:6379> GET runkey
"redis"
127.0.0.1:6379> GETRANGE runkey 0 4
"redis"
127.0.0.1:6379> GETRANGE runkey 0 -1
"redis"

4、GETSET key value:将给定 key 的值设为 value ,并返回 key 的旧值(old value)

我们给刚才的runkey的value修改为“mongodb”:

127.0.0.1:6379> GET runkey
"redis"
127.0.0.1:6379> GETSET runkey mongodb
"redis"
127.0.0.1:6379> GET runkey
"mongodb"

5、GETBIT key offset:对 key 所储存的字符串值,获取指定偏移量上的位(bit)

当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。

127.0.0.1:6379> EXISTS bit
(integer) 0
127.0.0.1:6379> GETBIT bit 1
(integer) 0
127.0.0.1:6379> GET runkey
"mongodb"
127.0.0.1:6379> GETBIT runkey 100
(integer) 0
127.0.0.1:6379> GETBIT runkey 10
(integer) 1

6、MGET key1 [key2...]:获取所有(一个或多个)给定 key 的值

一次获取多个key,如果该key不存在,则返回 (nil)

127.0.0.1:6379> SET mykey redis
OK
127.0.0.1:6379> SET runkey mysql
OK
127.0.0.1:6379> MGET mykey runkey ttkey
1) "redis"
2) "mysql"
3) (nil)

7、SETBIT key offset value:对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)

1)、这个偏移量是按二进位制从左到右,而且是从下标0开始的,按如下命令,设置一个值为“hello”的key。'h'的二进制为 0110 1000,此时把下标为2的位数改为0,则返回的二进制为 '0100 1000',所以这是GET到的值为“Hello”;(这里讲的可能不太对,但是实测确实是这样,如果有大佬看出有问题,请指正,感谢)。

2)、指定的value的值只能位0或者1,下面代码value输入2,然后就报错了。

127.0.0.1:6379> SET bitk hello
OK
127.0.0.1:6379> GET bitk
"hello"
127.0.0.1:6379> SETBIT bitk 2 0
(integer) 1
127.0.0.1:6379> GET bitk
"Hello"
127.0.0.1:6379> SETBIT bitk 2 2
(error) ERR bit is not an integer or out of range

8、SETEX key seconds value:将值 value 关联到 key ,并将 key 的过期时间设为 seconds 秒

这个命令就相当于:SET key value加 EXPIRE key seconds

127.0.0.1:6379> SETEX mykey 120 mongodb
OK
127.0.0.1:6379> GET mykey
"mongodb"
127.0.0.1:6379> TTL mykey
(integer) 109

9、SETNX key value:只有在 key 不存在时设置 key 的值

我们看到以下命令,当mykey存在时,执行SETNX命令,并没有改变mykey的值。

127.0.0.1:6379> SET mykey redis
OK
127.0.0.1:6379> GET mykey
"redis"
127.0.0.1:6379> SETNX mykey mysql
(integer) 0
127.0.0.1:6379> GET mykey
"redis"
127.0.0.1:6379> SETNX amkey mongodb
(integer) 1
127.0.0.1:6379> GET amkey
"mongodb"

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

127.0.0.1:6379> SET key1 'hello world'
OK
127.0.0.1:6379> GET key1
"hello world"
127.0.0.1:6379> SETRANGE key1 6 redis
(integer) 11
127.0.0.1:6379> GET key1
"hello redis"

11、STRLEN key:返回 key 所储存的字符串值的长度

127.0.0.1:6379> GET key1
"hello redis"
127.0.0.1:6379> STRLEN key1
(integer) 11

12、MSET key value [key value...]:同时设置一个或多个 key-value 对

(integer) 11
127.0.0.1:6379> MSET mk1 mr mk2 miss mk3 ccc
OK
127.0.0.1:6379> MGET mk1 mk2 mk3
1) "mr"
2) "miss"
3) "ccc"

13、MSETNX key value [key value...]:当key不存在时,同时设置一个或多个 key-value 对

127.0.0.1:6379> MGET mkk1 mkk2 mk3
1) (nil)
2) (nil)
3) "ccc"
127.0.0.1:6379> MSETNX mkk1 m1 mkk2 m2 mk3 fff
(integer) 0
127.0.0.1:6379> MGET mkk1 mkk2 mk3
1) (nil)
2) (nil)
3) "ccc"

我们看到上述命令,有一个mk3存在时,导致创建另外两个key失败,所以只有当所有的key不存在时,MSETNX才能创建成功。

127.0.0.1:6379> MGET mkk1 mkk2
1) (nil)
2) (nil)
127.0.0.1:6379> MSETNX mkk1 mmr mkk2 mmiss
(integer) 1
127.0.0.1:6379> MGET mkk1 mkk2
1) "mmr"
2) "mmiss"

14、PSETEX key milliseconds value:这个命令和 SETEX 命令相似,区别就是以毫秒为单位设置 key 的生存时间。

该命令相当于SET key value加 PEXPIRE key milliseconds

127.0.0.1:6379> PSETEX pk1 60000 pkone
OK
127.0.0.1:6379> GET pk1
"pkone"
127.0.0.1:6379> PTTL pk1
(integer) 49486

15、INCR key或DECR key:将 key 中储存的数字值加1或减1

127.0.0.1:6379> SET kk1 100
OK
127.0.0.1:6379> INCR kk1
(integer) 101
127.0.0.1:6379> DECR kk1
(integer) 100

16、INCRBY key increment或DECRBY key increment:将 key 所储存的值加上给定的增量值或减量值

127.0.0.1:6379> GET kk1
"100"
127.0.0.1:6379> INCRBY kk1 10
(integer) 110
127.0.0.1:6379> DECRBY kk1 9
(integer) 101

17、INCRBYFLOAT key increment:将 key 所储存的值加上给定的浮点增量值

127.0.0.1:6379> SET kk2 10
OK
127.0.0.1:6379> GET kk2
"10"
127.0.0.1:6379> INCRBYFLOAT kk2 2.5
"12.5"

18、APPEND key value:如 APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾

127.0.0.1:6379> GET kk3
(nil)
127.0.0.1:6379> APPEND kk3 123
(integer) 3
127.0.0.1:6379> GET kk3
"123"
127.0.0.1:6379> APPEND kk3 abc
(integer) 6
127.0.0.1:6379> GET kk3
"123abc"

Redis字符串及其相关的常用命令就介绍到这里,都是一些很简单的命令,你学废了吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值