数据库操作指令

Redis中库说明

  • 库:database用来存放数据一个基本单元,一个库可以存放key-value键值对redis中每一个都有一个唯一名称|编号,从0开始

  • 默认库的个数:16个库,库的编号:0-15,默认使用的是0号库,注意:库的个数可以在redis.conf中修改

    1
    2
    3
    4
    # Set the number of databases. The default database is DB 0, you can select
    # a different one on a per-connection basis using SELECT <dbid> where
    # dbid is a number between 0 and 'databases'-1
    databases 16

    Redis库的操作

  • 切换库指令:select 库的编号

    1
    2
    3
    4
    5
    [root@localhost bin]# ./redis-cli -h localhost -p 6379
    localhost:6379> select 0
    OK
    localhost:6379> select 1
    OK
  • 请出库指令

    • 清空当前的库 FLUSHDB
    • 清空全部的库 FLUSHALL
  • 客户端显示中文

    1
    2
    [root@localhost bin]# ./redis-cli -h localhost -p 6379 --raw
    localhost:6379>

操作key相关指令

image-20210325124930817

DEL指令

  • 语法 : DEL key [key …]
  • 作用 : 删除给定的一个或多个key ,不存在的key 会被忽略
  • 可用版本: >= 1.0.0
  • 返回值: 被删除key 的数量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
localhost:6379> set name zhangsan
OK
localhost:6379> set age 19
OK
localhost:6379> set bir 2021-03-25
OK
localhost:6379> set content 北京市丰台区
OK
localhost:6379> keys *
age
content
name
bir
localhost:6379> del bir age
2
localhost:6379> keys *
content
name

EXISTS指令

  • 语法: EXISTS key
  • 作用: 检查给定key 是否存在
  • 可用版本: >= 1.0.0
  • 返回值: 若key 存在,返回1 ,否则返回0
1
2
3
4
5
6
localhost:6379> exists name
1
localhost:6379> exists age
0
localhost:6379> exists name age bir (只要有一个存在,就返回1)
1

EXPIRE

  • 语法: EXPIRE key seconds
  • 作用: 为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
  • 可用版本: >= 1.0.0
  • 时间复杂度: O(1)
  • 返回值:设置成功返回1
1
2
3
4
5
6
7
localhost:6379> keys *
content
name
localhost:6379> expire name 10
1
localhost:6379> keys *
content

KEYS

  • 语法 : KEYS pattern
  • 作用 : 查找所有符合给定模式pattern 的key 。
  • 语法:
    • KEYS *匹配数据库中所有key
    • KEYS h?llo 匹配hello ,hallo 和hxllo 等
    • KEYS h*llo 匹配hllo 和heeeeello 等
    • KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符号用 “" 隔开
  • 可用版本: >= 1.0.0
  • 返回值: 符合给定模式的key 列表。

MOVE

  • 语法 : MOVE key db
  • 作用 : 将当前数据库的key 移动到给定的数据库db当中
  • 可用版本: >= 1.0.0
  • 返回值: 移动成功返回1 ,失败则返回0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
localhost:6379> select 0
OK
localhost:6379> keys *
name
content
localhost:6379> select 1
OK
localhost:6379[1]> keys *

localhost:6379[1]> select 0
OK
localhost:6379> move content 1
1
localhost:6379> keys *
name
localhost:6379> select 1
OK
localhost:6379[1]> keys *
content
localhost:6379[1]> get content
北京市丰台区

PEXPIRE

  • 语法 : PEXPIRE key milliseconds
  • 作用 : 这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位
  • 可用版本: >= 2.6.0
  • 时间复杂度: O(1)
  • 返回值:设置成功,返回1 key 不存在或设置失败,返回0

PEXPIREAT

  • 语法 : PEXPIREAT key milliseconds-timestamp
  • 作用 : 这个命令和EXPIREAT 命令类似,但它以毫秒为单位设置key 的过期unix 时间戳,而不是像EXPIREAT那样,以秒为单位
  • 可用版本: >= 2.6.0
  • 返回值:如果生存时间设置成功,返回1 。当key 不存在或没办法设置生存时间时,返回0 。(查看EXPIRE 命令获取更多信息)

TTL

  • 语法 : TTL key
  • 作用 : 以为单位,返回给定key 的剩余生存时间(TTL, time to live)
  • 可用版本: >= 1.0.0
  • 返回值:
    • 当key 不存在时,返回-2
    • 当key 存在但没有设置剩余生存时间时,返回-1
    • 否则,以秒为单位,返回key 的剩余生存时间
  • Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1
1
2
3
4
5
6
7
8
9
10
11
12
localhost:6379> keys *
name
localhost:6379> ttl name
-1
localhost:6379> ttl content
-2
localhost:6379> set address 北京市
OK
localhost:6379> expire address 100
1
localhost:6379> ttl address
94

PTTL

  • 语法 : PTTL key
  • 作用 : 这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位
  • 可用版本: >= 2.6.0
  • 返回值:
    • 当key 不存在时,返回-2
    • 当key 存在但没有设置剩余生存时间时,返回-1
    • 否则,以毫秒为单位,返回key 的剩余生存时间
  • 注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1

RANDOMKEY

  • 语法 : RANDOMKEY
  • 作用 : 从当前数据库中随机返回(不删除) 一个key
  • 可用版本: >= 1.0.0
  • 返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil
1
2
3
4
5
6
localhost:6379> randomkey
address
localhost:6379> randomkey
name
localhost:6379> randomkey
address

RENAME

  • 语法 : RENAME key newkey
  • 作用 : 将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值
  • 可用版本: >= 1.0.0
  • 返回值: 改名成功时提示OK ,失败时候返回一个错误
1
2
3
4
5
6
localhost:6379> keys *
name
localhost:6379> rename name username
OK
localhost:6379> keys *
username

TYPE

  • 语法 : TYPE key
  • 作用 : 返回key 所储存的值的类型。
  • 可用版本: >= 1.0.0
  • 返回值:
    • none (key 不存在)
    • string (字符串)
    • list (列表)
    • set (集合)
    • zset (有序集)
    • hash (哈希表)
1
2
3
4
localhost:6379> type username
string
localhost:6379> type age
string

String类型

内存存储模型

image-20210325130753699

常用操作命令

命令 说明
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-20210325141431608

常用操作指令

命令 说明
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-20210327132727333

常用命令

命令 说明
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-20210325160310833

常用命令

命令 说明
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-20210325160844534

常用命令

命令 说明
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