Jean's Blog

一个专注软件测试开发技术的个人博客

0%

Redis基础数据类型

String类型

内存存储模型

image-20220714104800910

常用操作命令

命令 说明
set 设置一个key/value
get 根据key获得对应的value
mset 一次设置多个key value
mget 一次获得多个key的value
getset 获得原始key的值,同时设置新值
strlen 获得对应key存储value的长度
append 为对应key的value追加内容
getrange 索引0开始 截取value的内容
setex 设置一个key存活的有效期(
psetex 设置一个key存活的有效期(毫秒
setnx 存在不做任何操作,不存在添加
msetnx原子操作(只要有一个存在不做任何操作) 可以同时设置多个key,只有有一个存在都不保存
decr 进行数值类型的-1操作
decrby 根据提供的数据进行减法操作
Incr 进行数值类型的+1操作
incrby 根据提供的数据进行加法操作
Incrbyfloat 根据提供的数据加入浮点数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
localhost:6379> set name 王小花
OK
localhost:6379> get name
王小花
localhost:6379> mset age 18 bir 2012-12-12
OK
localhost:6379> keys *
username
age
name
bir
localhost:6379> mget name age bir
王小花
18
2012-12-12
localhost:6379> getset name 小黑
王小花
localhost:6379> get name
小黑
localhost:6379> strlen name
6
localhost:6379> append name thisgoodman
17
localhost:6379> get name
小黑thisgoodman
localhost:6379> getrange name 6 16
thisgoodman
localhost:6379> getrange name 6 -1
thisgoodman
localhost:6379> keys *

localhost:6379> set name zhangsan
OK
localhost:6379> ttl name
-1
localhost:6379> setex age 100 19
OK
localhost:6379> ttl age
96
localhost:6379> keys *
name
localhost:6379> setnx name xiaohei
0
localhost:6379> get name
zhangsan
localhost:6379> setnx content xiaohei
1
localhost:6379> get content
xiaohei
localhost:6379> set age 19
OK
localhost:6379> get age
19
localhost:6379> decr age
18
localhost:6379> decr age
17
localhost:6379> incr age
18
localhost:6379> incr age
19
localhost:6379> incr age
20

List类型

list 列表 相当于java中list 集合 特点 元素有序可以重复

内存存储模型

image-20220714104835465

常用操作指令

命令 说明
lpush 将某个值加入到一个key列表头部
lpushx(x:exists是否存在) 同lpush,但是必须要保证这个key存在
rpush 将某个值加入到一个key列表末尾
rpushx 同rpush,但是必须要保证这个key存在
lpop 返回和移除列表左边的第一个元素
rpop 返回和移除列表右边的第一个元素
lrange 获取某一个下标区间内的元素
llen 获取列表元素个数
lset 设置某一个指定索引的值(索引必须存在)
lindex 获取某一个指定索引位置的元素
lrem 删除重复元素
ltrim 保留列表中特定区间内的元素
linsert 在某一个元素之前,之后插入新元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
localhost:6379> FLUSHDB
OK
localhost:6379> lpush lists zhangsan xiaoming xiaohei lisi xiaoming
5
localhost:6379> keys *
lists
localhost:6379> type lists
list
localhost:6379> lrange lists 0 -1
xiaoming
lisi
xiaohei
xiaoming
zhangsan
localhost:6379> lrange lists 1 3
lisi
xiaohei
xiaoming
localhost:6379> rpush lists xiaojindou xiaoheidou
7
localhost:6379> lrange lists 0 -1
xiaoming
lisi
xiaohei
xiaoming
zhangsan
xiaojindou
xiaoheidou
localhost:6379> lpop lists
xiaoming
localhost:6379> lpop lists
lisi
localhost:6379> lrange lists 0 -1
xiaohei
xiaoming
zhangsan
xiaojindou
xiaoheidou
localhost:6379> rpop lists
xiaoheidou
localhost:6379> rpop lists
xiaojindou
localhost:6379> lrange lists 0 -1
xiaohei
xiaoming
zhangsan
localhost:6379> llen lists
3
localhost:6379> lset lists 1 wangxiaohua
OK
localhost:6379> lrange lists 0 -1
xiaohei
wangxiaohua
zhangsan
localhost:6379> lindex lists 2
zhangsan

Set类型

Set类型 相当于Java中的Set集合 特点:元素无序 不可以重复

内存存储模型

image-20220714104905970

常用命令

命令 说明
sadd 为集合添加元素
smembers 显示集合中所有元素 无序
scard 返回集合中元素的个数
spop 随机返回一个元素 并将元素在集合中删除
smove 从一个集合中向另一个集合移动元素 必须是同一种类型
srem 从集合中删除一个元素
sismember 判断一个集合中是否含有这个元素
srandmember 随机返回元素 不删除元素
sdiff 去掉第一个集合中其它集合含有的相同元素
sinter 求交集
sunion 求和集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
localhost:6379> sadd sets zhangsan lisi wangwu zhaoliu lisi
4
localhost:6379> keys *
sets
localhost:6379> type sets
set
localhost:6379> smembers sets
wangwu
zhaoliu
lisi
zhangsan
localhost:6379> scard sets
4
localhost:6379> spop sets
zhaoliu
localhost:6379> smembers sets
lisi
wangwu
zhangsan
localhost:6379> sadd ages 18 19 20
3
localhost:6379> smembers sets
lisi
wangwu
zhangsan
localhost:6379> smembers ages
18
19
20
localhost:6379> smove sets ages zhangsan
1
localhost:6379> smembers sets
lisi
wangwu
localhost:6379> smembers ages
19
18
zhangsan
20
localhost:6379> srem ages zhangsan 18
2
localhost:6379> smembers ages
19
20
localhost:6379> smembers sets
lisi
wangwu
localhost:6379> sismember sets lisi
1
localhost:6379> sismember sets zhaoliu
0

ZSet类型

相当于Java中的TreeSet,特点: 可排序的set集合 排序 不可重复

ZSET 官方 可排序SET sortSet

内存模型

image-20220714104951737

常用命令

命令 说明
zadd 添加一个有序集合元素
zcard 返回集合的元素个数
zrange 升序 zrevrange 降序 返回一个范围内的元素
zrangebyscore 按照分数查找一个范围内的元素
zrank 返回排名
zrevrank 倒序排名
zscore 显示某一个元素的分数
zrem 移除某一个元素
zincrby 给某个特定元素加分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
localhost:6379> flushdb
OK
localhost:6379> zadd zsets 10 zhangsan 9 xiaohei 8 xiaochen 100 xiaming 15 xiaochen
4
localhost:6379> type zsets
zset
localhost:6379> zrange zsets 0 -1
xiaohei
zhangsan
xiaochen
xiaming
localhost:6379> zrange zsets 0 -1 withscores
xiaohei
9
zhangsan
10
xiaochen
15
xiaming
100
localhost:6379> zrangebyscore zsets 0 20 withscores limit 0 10
xiaohei
9
zhangsan
10
xiaochen
15
localhost:6379> zrank zsets xiaochen
2
localhost:6379> zrevrank zsets xiaochen
1
localhost:6379> zrem zsets xiaochen
1
localhost:6379> zrange zsets 0 -1 withscores
xiaohei
9
zhangsan
10
xiaming
100
localhost:6379> zincrby zsets 1 xiaohei
10
localhost:6379> zincrby zsets 1 xiaohei
11

Hash类型

特点: value 是一个map结构 存在key value key 无序的

key(string) - value(map)

内存模型

image-20220714105037325

常用命令

命令 说明
hset 设置一个key/value对
hget 获得一个key对应的value
hgetall 获得所有的key/value对
hdel 删除某一个key/value对
hexists 判断一个key是否存在
hkeys 获得所有的key
hvals 获得所有的value
hmset 设置多个key/value
hmget 获得多个key的value
hsetnx 设置一个不存在的key的值
hincrby 为value进行加法运算
hincrbyfloat 为value加入浮点值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
localhost:6379> hset maps name zhangsan
1
localhost:6379> type maps
hash
localhost:6379> hget maps name
zhangsan
localhost:6379> hset maps age 18
1
localhost:6379> hset maps bir 2012-12-12
1
localhost:6379> hgetall maps
name
zhangsan
age
18
bir
2012-12-12
localhost:6379> hdel maps bir
1
localhost:6379> hgetall maps
name
zhangsan
age
18
localhost:6379> hexists maps bir
0
localhost:6379> hexists maps name
1
localhost:6379> hkeys maps
name
age
localhost:6379> hvals maps
zhangsan
18
localhost:6379> hmset maps bir 2012-12-12 address beijing clazz 2001
OK
localhost:6379> hgetall maps
name
zhangsan
age
18
bir
2012-12-12
address
beijing
clazz
2001
localhost:6379> hmget maps name age bir content address clazz
zhangsan
18
2012-12-12

beijing
2001
localhost:6379> hsetnx maps course redis
1
localhost:6379> hgetall maps
name
zhangsan
age
18
bir
2012-12-12
address
beijing
clazz
2001
course
redis
localhost:6379> hincrby maps age 10
28
localhost:6379> hincrby maps age 10
38
localhost:6379> hincrbyfloat maps claszz 10.23423423423423423
10.23423423423423423