2. redis五种数据类型(慕课)
来源:免费 redis的五种数据类型-慕课网
课程只是基础介绍,详细指令见官网
整体介绍
数据类型 | 存储的值 | 读写能力 |
---|---|---|
String | 可以是字符串、整数或浮点,统称为元素 | 对字符串操作对整数类型加减 |
List | 一个序列集合且每个节点都包好了一个元素 | 序列两端推入、或弹出元素修剪、查找或移除元素 |
Set | 各不相同的元素 | 从集合中插入或者删除元素 |
Hash | 有key-value的散列组,其中key是字符串,value是元素 | 按照key进行增加删除 |
Sort Set | 带分数的score-value有序集合,其中score为浮点,value为元素 | 集合插入,按照分数范围查找 |
string类型
string类型的键和值可以是 字符串(str)、整数(int)、浮点小数(float)
key value(string/int/float) 操作string类型元素
设置一个string类型的元素# set key value
获取一个string类型的元素# get key
连接状态下1
2
3
4
5
6
7
8
9
10
11
12
13
14set string1 nihaoya~ #设置一个string类型的元素
ok
get string1 #获取该元素的值
"nihaoya~"
set string2 123 #设置一个整数值
ok
get string2 #获取该元素的值
"123"
set 1 123456 #设置一个key,value都为整数的元素
ok
get 1 #获取该元素的值
"123456"string类型元素自增自减
1
2
3
4incr string2 5 #自增操作,表示string2+5,不写5默认为1
(int) 128
decrby string2 #自减操作,默认减一
(int) 127
list类型
list是一个有序的列表
list元素与string元素一样可以为:str,int,float,并且元素可以重复
一个列表最多包含超40亿个元素
对list操作需要说明方向:左或右
假设我们有个list数据
list1=>[1,2,3,4]
操作设置的方向,即设定从list的左l(left)/右r(right)操作为1
2
3
4
5
6
7
8
9lpush list1 0 #从左边插入一位
(int) 5 #list1中元素个数为5
此时list1=>[0,1,2,3,4]
rpop list1 #从右边弹出一位
(int) "4"
此时list1=>[0,1,2,3]
llen list1 #查看元素个数(不分左右,没有rlen)
(int) 4
set类型
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
指令:s(set)-xxx1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18sadd set1 12 #给set1插入一个元素12
(int) 1 #表示插入成功
sadd set1 13
(int) 1
sadd set1 13
(int) 0 #表示插入失败
set1中有多少个元素
scard set1
(int) 2
判断某个元素是否在列表内
sismember set1 13
(int) 1
删除某个元素
srem set1 13
(int) 1Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
每个集合可存储40多亿个成员。
hash类型
- Redis hash 是一个 string 类型的 key-value(键值对)的映射表,hash 特别适合用于存储对象。
- hash 的键值是一一对应的
- Redis 中每个 hash 可以存储40多亿键值对。
指令 h(hash)-xxx
1 | 插入一个键值到hash表中,返回1表示插入成功 |
sort set类型
是一个有序集合,且不允许重复的value。
可看做一个排行榜,score为热度(分数),value为内容(姓名),rank为隐藏部分属于排行,score值最小rank越靠前
映射关系不同于hash的
key-value
,sortSet的映射为score-value
,score为浮点数。
![RH3S5BR$YZNE0OIGHZZEU`0.png](/2022/08/21/2-redis五种数据类型(慕课)/2fca0ee6.png)value
是唯一的,重复时会覆盖之前那条数据的score
与value
。score
相同时,排序根据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添加 table score value
zadd zset1 10.1 val1
(int) 1
zadd zset1 11.2 val2
(int) 1
zadd zset1 12.3 val3
(int) 1
value相同时,覆盖之前的数据
zadd zset1 9.1 val1
(int) 0
zcard zset1 #查看元素个数
(int) 3
zrange zset1 0 2 withscores #根据score查出0到2的排序
1) "val1"
2) "9.0999999999999996"
3) "val2"
4) "11.199999999999999"
5) "val3"
6) "12.300000000000001"
`score`相同时,排序根据`value`中字段的字典顺序
zadd zset1 12.3 val0
(int) 1
zrange zset1 0 3 withscores
1) "val1"
2) "9.0999999999999996"
3) "val2"
4) "11.199999999999999"
5) "val0"
6) "12.300000000000001"
7) "val3"
8) "12.300000000000001"
查看某个value排序
zrank zset1 val2
(int) 1
Comments