Redis的基本类型之一:String

2020-07-10  本文已影响0人  程序员小杰

常用的 redis 字符串命令:

1、set key value

设置指定 key 的值

127.0.0.1:6379> set k1 gongj

2、get key

获取指定 key 的值

127.0.0.1:6379> get k1
"gongj"

3、getrange key start end

返回 key 中字符串值的子字符。其中,-1表示最后一个字符串,-2表示倒数第二个字符串

127.0.0.1:6379> get k1
"gongjtt"
127.0.0.1:6379> getrange k1 0 3
"gong"
127.0.0.1:6379> getrange k1 1 -1
"ongjtt"

4、append key value

如果 key 已经存在并且是一个字符串, append 命令将指定的 value 追加到该 key 原来值(value)的末尾

127.0.0.1:6379> append k1 tt
(integer) 7
127.0.0.1:6379> get k1
"gongjtt"
127.0.0.1:6379> append k2 yuanj
(integer) 5
127.0.0.1:6379> get k2
"yuanj"

5、decr key

将 key 中储存的数字值减一,如果value不是数字,会报错。如果key不存在,则会给一个默认值为0,在默认值的基础上减一。

#k3不存在
127.0.0.1:6379> decr k3
(integer) -1

6、decrby key decrement

key 所储存的值减去给定的减量值(decrement)

127.0.0.1:6379> decrby k4 5
(integer) -5

7、getset key value

将给定 key 的值设为 value ,并返回 key 的旧值

127.0.0.1:6379> getset k2 100
"yuanj"
127.0.0.1:6379> get k2
"100"

8、incr key

将 key 中储存的数字值增一

127.0.0.1:6379> incr k2
(integer) 101
127.0.0.1:6379> incr k2
(integer) 102

9、incrby key increment

将 key 所储存的值加上给定的增量值(increment)

127.0.0.1:6379> incrby k2 10
(integer) 112
127.0.0.1:6379> incrby k2 10
(integer) 122

10、incrbyfloat key increment

将 key 所储存的值加上给定的浮点增量值(increment)

127.0.0.1:6379> incrbyfloat k2 1.22
"123.22"

11、mget key1 [key2..]

获取一个或多个给定 key 的值。

127.0.0.1:6379> mget k1 k2 k3
1) "gongjtt"
2) "123.22"
3) "-1"

12、mset key value [key value ...]

同时设置一个或多个 key-value 对。

127.0.0.1:6379> mset k4 ggg k5 yyyy
OK
127.0.0.1:6379> keys *
1) "k4"
2) "k1"
3) "k2"
4) "k3"
5) "k5"
127.0.0.1:6379> 

14、ttl key

查看key的过期时间,-1代表不会过期。-2代表已经过期

127.0.0.1:6379> ttl k1
(integer) -1

13、setex key seconds value

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)

127.0.0.1:6379> setex k6 10 gongjyuanj
OK
127.0.0.1:6379> ttl k6
(integer) 7
127.0.0.1:6379> ttl k6
(integer) -2
127.0.0.1:6379> get k6
(nil)

14、psetex key millisecond value

与setex类似,只不过这里的时间单位是毫秒

127.0.0.1:6379> psetex k7 10000 sssssssss
OK
127.0.0.1:6379> ttl k7
(integer) 6
127.0.0.1:6379> ttl k7
(integer) 1
127.0.0.1:6379> get k7
(nil)

15、SETNX key value

只有在 key 不存在时设置 key 的值
set会覆盖之前的值

127.0.0.1:6379> get k1
"gongjtt"
127.0.0.1:6379> set k1 dddd
OK
127.0.0.1:6379> get k1
"dddd"
127.0.0.1:6379> setnx k1 yyy
(integer) 0
127.0.0.1:6379> get k1
"dddd"
127.0.0.1:6379> setnx k8 bbbbsa
(integer) 1   #1设置成功
127.0.0.1:6379> get k8
"bbbbsa"

16、msetnx key value [key value]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在才设置成功

127.0.0.1:6379> msetnx k8 eeeeeeeeee k9 oooooooooo
(integer) 0  # 0 代表失败
127.0.0.1:6379> get k8
"bbbbsa"
127.0.0.1:6379> get k9
(nil)
##################失败,由于k8已经存在
127.0.0.1:6379> msetnx k9 3333333333 k10 111111111111
(integer) 1  #1代表成功
127.0.0.1:6379> get k9
"3333333333"
127.0.0.1:6379> get k10
"111111111111"

17、setrange key offset value

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。当给定的offset大于字符长度,多余的会补0

127.0.0.1:6379> get k1
"dddd"
127.0.0.1:6379> setrange k1 0 go
(integer) 4  #4为长度
127.0.0.1:6379> get k1
"godd"
127.0.0.1:6379> setrange k1 5 yuanj
(integer) 10
127.0.0.1:6379> get k1
"godd\x00yuanj"

18、strlen key

返回 key 所储存的字符串值的长度。

127.0.0.1:6379> set k12 **@@e%%%$$
OK
127.0.0.1:6379> strlen k12
(integer) 10

BIT命令

在 Redis 中,字符串都是以二进制的方式来存储的。例如 set k13 a,a 对应的 ASCII 码是 97,97 转为二进制是 01100001,BIT 相关的命令就是对二级制进行操作的。

第八位 第七位 第六位 第五位 第四位 第三位 第二位 第一位
0 1 1 0 0 0 0 1
0 64 32 0 0 0 0 1

左移就是*2。

getbit key offset

对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

127.0.0.1:6379> set k13 a
OK
127.0.0.1:6379> get k13
"a"
127.0.0.1:6379> getbit k13 0
(integer) 0
127.0.0.1:6379> getbit k13 1
(integer) 1
127.0.0.1:6379> getbit k13 2
(integer) 1
127.0.0.1:6379> getbit k13 3
(integer) 0
127.0.0.1:6379> getbit k13 4
(integer) 0
127.0.0.1:6379> getbit k13 5
(integer) 0
127.0.0.1:6379> getbit k13 6
(integer) 0
127.0.0.1:6379> getbit k13 7
(integer) 1

setbit key offset value

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

127.0.0.1:6379> setbit k13 7 0
(integer) 1
127.0.0.1:6379> setbit k13 6 1
(integer) 0
127.0.0.1:6379> get k13
"b"

将第七位设置为0,第六位设置为1。也就变为了01100010

bitcount

127.0.0.1:6379> bitcount k13
(integer) 3
127.0.0.1:6379> set k13 adb
OK
127.0.0.1:6379> bitcount k13 0 3
(integer) 9
127.0.0.1:6379> 

0 3是指adb三个字符串。
以上所以只是均来自于大佬江南一点雨
个人博客:http://www.javaboy.org/

image.png
上一篇 下一篇

猜你喜欢

热点阅读