Redis CRUD命令

数据类型

Redis是一个key-value存储系统,存储的数据都是key-value格式的,key固定是String类型,value类型可以是:

  1. String
  2. Hash:和HashMap一样,由key-value组成
  3. List:列表,有序的,按插入顺序排序,可以指定从头部插入还是尾部插入,可以含重复值
  4. Set:集合,无序的,不含重复值(插入重复值不会成功也不会报错)
  5. ZSet:有序集合,比Set多一个排序用的score字段,有序的,不含重复值,score值可以重复

CRUD命令

String

1
2
3
4
5
6
7
8
127.0.0.1:6379> set cys ccc -- 增
OK
127.0.0.1:6379> get cys -- 查
"ccc"
127.0.0.1:6379> set cys yyy -- 改
OK
127.0.0.1:6379> del cys -- 删
(integer) 1

注意:del命令就是删掉整个key-value,无论value是什么格式。所以下面的Hash、List等整个删除也是用del

要查看新增、删除结果,可以用如下方法查看:

1
2
127.0.0.1:6379> keys * -- 查看所有key,可以看到新增的key,看不到已删除的key
1) "cys"

Hash

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> hmset cyshash name cys age 22 -- 增,新增Map并添加元素,cyshash就是Map名字
OK
127.0.0.1:6379> hset cyshash age 23 -- 改单个元素
(integer) 0
127.0.0.1:6379> hmset cyshash city shenzhen -- 改,给Map添加元素
OK
127.0.0.1:6379> hdel cyshash age -- 删Map中单个元素
(integer) 1
127.0.0.1:6379> del cyshash -- 删整个Map
(integer) 1

查:

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> hgetall cyshash -- 查整个Map
1) "name"
2) "cys"
3) "age"
4) "22"
127.0.0.1:6379> hget cyshash name -- 查单个元素
"cys"
127.0.0.1:6379> hmget cyshash name age -- 同时查多个元素
1) "cys"
2) "22"

List

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
127.0.0.1:6379> lpush cyslist a -- 增,新增List并添加一个元素
(integer) 1
127.0.0.1:6379> llen cyslist -- 查List长度
(integer) 1
127.0.0.1:6379> lrange cyslist 0 2 -- 查,限定List下标范围查包含元素
1) "a"
127.0.0.1:6379> lpush cyslist b c d f -- 改,给List添加元素
(integer) 5
127.0.0.1:6379> lset cyslist 0 e -- 改,改某个下标的值
OK
127.0.0.1:6379> lrange cyslist 0 10 -- 可以看到0位"f"改成了"e"
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> lpop cyslist -- 删一个元素,返回被删的元素值
"e"
127.0.0.1:6379> del cyslist -- 删整个List
(integer) 1

注意:List的添加、删除元素可以在头尾两端添加,上面的lpush是在头部添加,lpop是在头部删除。

Set

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
127.0.0.1:6379> sadd cysset abc 123 -- 增,新增Set并添加元素
(integer) 2
127.0.0.1:6379> smembers cysset -- 查所有元素
1) "123"
2) "abc"
127.0.0.1:6379> sadd cysset dfh 098 -09 -- 改,给Set添加元素
(integer) 1
127.0.0.1:6379> smembers cysset -- 可以看到元素无序
1) "dfh"
2) "098"
3) "123"
4) "abc"
5) "-09"
127.0.0.1:6379> spop cysset -- 删除尾部一个元素
"-09"
127.0.0.1:6379> srem cysset 098 -- 删除指定元素
(integer) 1
127.0.0.1:6379> del cysset -- 删整个Set
(integer) 1

注意:Set因为无序,所以不能指定下标或下标范围查找元素,也不能指定下标修改元素。另外,Set还有求多个Set之间交集、差集、并集的命令。

ZSet

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
127.0.0.1:6379> zadd cyszet 1 a 2 b 3 c -- 增,新增ZSet并添加元素
(integer) 3
127.0.0.1:6379> zrange cyszet 0 10 -- 查,下标在0~10的元素
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrange cyszet 0 10 WITHSCORES -- 查,下标在0~10的元素,结果带分数
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
127.0.0.1:6379> zrangebyscore cyszet 2 3 -- 查,分数在2~3的元素,这个方法也可以带 WITHSCORES
1) "b"
2) "c"
127.0.0.1:6379> zscore cyszet c -- 查,某个元素的分数
"3"
127.0.0.1:6379> zadd cyszet 4 d 5 f -- 改,给ZSet添加元素
(integer) 2
127.0.0.1:6379> zrem cyszet a -- 删,指定元素
(integer) 1
127.0.0.1:6379> zrange cyszet 0 10 -- 删指定元素的结果
1) "b"
2) "c"
3) "d"
4) "f"
127.0.0.1:6379> zremrangebyrank cyszet 0 1 -- 删,按下标范围删除元素
(integer) 2
127.0.0.1:6379> zrange cyszet 0 10 -- 按下标范围删除元素的结果
1) "d"
2) "f"
127.0.0.1:6379> del cyszet -- 删整个ZSet
(integer) 1

注意:ZSet有根据下标区间、分数区间、字典区间查找、删除元素的方法,还有求多个ZSet之间交集、并集的命令。

操作Key的命令

1
2
3
4
5
6
127.0.0.1:6379> keys * -- 查看所有key
1) "cysset"
127.0.0.1:6379> type cysset -- 查看key对应value类型
set
127.0.0.1:6379> expire cysset 2 -- 设置key在2秒后过期
(integer) 1

其余还有很多,没列出来。