Redis 基础命令

Redis 基础数据结构 常用的命令。

string(字符串)

键值对

1
2
3
4
5
6
7
8
9
10
172.19.190.187:6379>set s1 v1
OK
172.19.190.187:6379>get s1
v1
172.19.190.187:6379>exists s1
(integer) 1
172.19.190.187:6379>del s1
(integer) 1
172.19.190.187:6379>get s1
(nil)

批量键值对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
172.19.190.187:6379>set s1 v1
OK
172.19.190.187:6379>set s2 v2
OK
172.19.190.187:6379>mget s1 s2 s3
1) v1
2) v2
3) (nil)
172.19.190.187:6379>mset s3 v3 s4 v4 s5 unknown
OK
172.19.190.187:6379>mget s3 s4 s5
1) v3
2) v4
3) unknown

过期和 set 命令扩展

可以对 key 设置过期时间,到点自动删除,这个功能常用来控制缓存的失效时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
172.19.190.187:6379>set s6 v6
OK
172.19.190.187:6379>get s6
v6
172.19.190.187:6379>expire s6 55秒 后过期】
(integer) 1
172.19.190.187:6379>get s6
(nil)
172.19.190.187:6379>setex s6 6 hello 【6秒 后过期,等价于 set+expire】
OK
172.19.190.187:6379>get s6
hello
172.19.190.187:6379>get s6
(nil)
172.19.190.187:6379>setnx s6 v6 【如果 s6 不存在就执行 set 创建 】
(integer) 1
172.19.190.187:6379>get s6
v6
172.19.190.187:6379>setnx s6 v7 【因为 s6 已经存在,所以set 创建不成功 】
(integer) 0
172.19.190.187:6379>get s6 【s6 的值没有变化】
v6

计数

如果 value 值是一个整数,还可以对它进行自增操作。自增是有范围的,它的范围是 signed long 的最大最小值,超过了这个值,Redis 会报错。

1
2
3
4
5
6
7
8
9
10
11
12
172.19.190.187:6379>set s1_age 30
OK
172.19.190.187:6379>incr s1_age
(integer) 31
172.19.190.187:6379>incrby s1_age 5
(integer) 36
172.19.190.187:6379>incrby s1_age -5
(integer) 31
172.19.190.187:6379>set s_max 9223372036854775807 【Long.Max】
OK
172.19.190.187:6379>incr s_max
ERR increment or decrement would overflow

list(列表)

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
127.0.0.1:6379> rpush java spring mvc
(integer) 2
127.0.0.1:6379> llen java
(integer) 2
127.0.0.1:6379> lpop java
"spring"
127.0.0.1:6379> lpop java
"mvc"
127.0.0.1:6379> lpop java
(nil)
127.0.0.1:6379> rpush java spring data
(integer) 2
127.0.0.1:6379> rpop java
"data"
127.0.0.1:6379> rpop java
"spring"
127.0.0.1:6379> rpop java
(nil)
127.0.0.1:6379> rpush java spring mvc data boot
(integer) 4
127.0.0.1:6379> rpush java mvc
(integer) 5
127.0.0.1:6379> lindex java 1 【慎用,会对链表进行遍历,参数越大性能越差】
"mvc"
127.0.0.1:6379> lrange java 0 -1
1) "spring"
2) "mvc"
3) "data"
4) "boot"
5) "mvc"
127.0.0.1:6379> ltrim java 1 -1 【保留区间之内的元素】
OK
127.0.0.1:6379> lrange java 0 -1
1) "mvc"
2) "data"
3) "boot"
4) "mvc"
127.0.0.1:6379> ltrim java 1 0
OK
127.0.0.1:6379> llen java
(integer) 0
127.0.0.1:6379> exists java
(integer) 0
127.0.0.1:6379>

hash(字典)

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
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> hset books java "think in java"
(integer) 1
127.0.0.1:6379> hset books spring "beanFactory"
(integer) 1
127.0.0.1:6379> hset books go "hello go"
(integer) 1
127.0.0.1:6379> hset books python "python"
(integer) 1
127.0.0.1:6379> hgetall books
1) "java"
2) "think in java"
3) "spring"
4) "beanFactory"
5) "go"
6) "hello go"
7) "python"
8) "python"
127.0.0.1:6379> hget books java
"think in java"
127.0.0.1:6379> hset books spring 'IOC and AOP'
(integer) 0
127.0.0.1:6379> hget books spring
"IOC and AOP"
127.0.0.1:6379> hmset books java 'hello java' python 'hello python'
OK
127.0.0.1:6379> hgetall books
1) "java"
2) "hello java"
3) "spring"
4) "IOC and AOP"
5) "go"
6) "hello go"
7) "python"
8) "hello python"
127.0.0.1:6379> hincrby user-h age 10
(integer) 10
127.0.0.1:6379> hget user-h age
"10"
127.0.0.1:6379>

set(集合)

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
127.0.0.1:6379> sadd award chenfu1 chenfu2 chenfu1
(integer) 2
127.0.0.1:6379> sadd award chenfu2 【重复元素】
(integer) 0
127.0.0.1:6379> sadd award chenfu3
(integer) 1
127.0.0.1:6379> smembers award 【显示的是插入顺序不一致,因为set是无序的】
1) "chenfu3"
2) "chenfu2"
3) "chenfu1"
127.0.0.1:6379> sismembers award chenfu2 【查询某个value是否存在】
(error) ERR unknown command 'sismembers'
127.0.0.1:6379> sismember award chenfu2
(integer) 1
127.0.0.1:6379> sismember award chenfu5
(integer) 0
127.0.0.1:6379> scard award 【获取set 集合长度】
(integer) 3
127.0.0.1:6379> smembers award
1) "chenfu3"
2) "chenfu2"
3) "chenfu1"
127.0.0.1:6379> smembers award
1) "chenfu3"
2) "chenfu2"
3) "chenfu1"
127.0.0.1:6379> sadd award chenfu8
(integer) 1
127.0.0.1:6379> sadd award chenfu6
(integer) 1
127.0.0.1:6379> smembers award
1) "chenfu3"
2) "chenfu2"
3) "chenfu1"
4) "chenfu8"
5) "chenfu6"
127.0.0.1:6379> sadd award chenfu0
(integer) 1
127.0.0.1:6379> smembers award
1) "chenfu2"
2) "chenfu1"
3) "chenfu8"
4) "chenfu3"
5) "chenfu6"
6) "chenfu0"
127.0.0.1:6379> sadd award java1
(integer) 1
127.0.0.1:6379> smembers award
1) "chenfu8"
2) "chenfu3"
3) "chenfu1"
4) "java1"
5) "chenfu2"
6) "chenfu6"
7) "chenfu0"
127.0.0.1:6379> spop award 【弹出一个元素,随机弹的】
"chenfu8"
127.0.0.1:6379> spop award
"chenfu2"
127.0.0.1:6379>

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
35
127.0.0.1:6379> zadd zuser 10 'chenfu10'
(integer) 1
127.0.0.1:6379> zadd zuser 1 'chenfu1'
(integer) 1
127.0.0.1:6379> zadd zuser 2 'chenfu2'
(integer) 1
127.0.0.1:6379> zrange zuser 0 -1 【按score 排序,参数区间是排名范围|score】
1) "chenfu1"
2) "chenfu2"
3) "chenfu10"
127.0.0.1:6379> zrevrange zuser 0 -1 【按score 逆序列出】
1) "chenfu10"
2) "chenfu2"
3) "chenfu1"
127.0.0.1:6379> zcard zuser 【统计元素个数】
(integer) 3
127.0.0.1:6379> zscore zuser 'chenfu2' 【获取指定元素score】
"2"
127.0.0.1:6379> zrank zuser 'chenfu2' 【获取指定元素的排名】
(integer) 1
127.0.0.1:6379> zrank zuser 'chenfu1'
(integer) 0
127.0.0.1:6379> zrank zuser 'chenfu0'
(nil)
127.0.0.1:6379> zrangebyscore zuser -inf 2 [withscores] 【根据分值区间遍历zset,withscores是否返回分值,inf:无穷大的意思】
1) "chenfu1"
2) "1"
3) "chenfu2"
4) "2"
127.0.0.1:6379> zrem zuser 'chenfu2' 【删除元素】
(integer) 1
127.0.0.1:6379> zrange zuser 0 -1
1) "chenfu1"
2) "chenfu10"
127.0.0.1:6379>
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2015-2020 臣服Romantic”
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信