前言

Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。在编程时,比如各类语言包,这些命令都有对应的方法。下面将Redis提供的命令做一总结。

键值相关命令

keys

返回满足给定pattern的所有key

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
127.0.0.1:6379> keys *
1) "mylist4"
2) "myset7"
3) "name1"
4) "myset3"
5) "myset2"
6) "mylist2"
7) "mylist6"
8) "name"
9) "myhash"
10) "mylist7"
11) "key1"
12) "mylist5"
13) "mylist8"
14) "myzset2"
15) "myzset3"
16) "myzset"
17) "myset5"
18) "myset4"
19) "mylist3"
20) "myset"
21) "myset6"
22) "age"
23) "mylist"
24) "key2"

用表达式*,代表取出所有的key。

1
2
3
4
5
6
7
8
9
127.0.0.1:6379> keys mylist*
1) "mylist4"
2) "mylist2"
3) "mylist6"
4) "mylist7"
5) "mylist5"
6) "mylist8"
7) "mylist3"
8) "mylist"

用表达式mylist*,代表取出所有以mylist开头的key。

exists

确认一个key是否存在

1
2
3
4
127.0.0.1:6379> exists HongWan
(integer) 0
127.0.0.1:6379> exists age
(integer) 1

从结果来数据库中不存在HongWan这个key,但是age这个key是存在的。

del

删除一个key

1
2
3
4
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> exists age
(integer) 0

expire

设置一个key的过期时间(单位:秒)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
127.0.0.1:6379> exists addr
(integer) 1
127.0.0.1:6379> ttl addr
(integer) -1
127.0.0.1:6379> expire addr 10
(integer) 1
127.0.0.1:6379> ttl addr
(integer) 6
127.0.0.1:6379> ttl addr
(integer) 5
127.0.0.1:6379> ttl addr
(integer) 4
127.0.0.1:6379> ttl addr
(integer) -2
127.0.0.1:6379> exists addr
(integer) 0

可以看到,未设置过期时间时,ttl值为-1,设置10s过期后,不断地使用ttl获取key的有效时长,当值为-2时,表示已过期并被删除。

move

将当前数据库中的key转移到其它数据库中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set age 30
OK
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> move age 1
(integer) 1
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get age
"30"

在本例中,我先显式的选择了数据库0,然后在这个库中设置一个key,接下来我们将这个key从数据库0移到数据库1,之后我们确认在数据库0中无此key了, 但在数据库1中存在这个key,说明我们转移成功了 。

persist

移除给定key的过期时间

1
2
3
4
5
6
7
8
127.0.0.1:6379[1]> expire age 300
(integer) 1
127.0.0.1:6379[1]> ttl age
(integer) 296
127.0.0.1:6379[1]> persist age
(integer) 1
127.0.0.1:6379[1]> ttl age
(integer) -1

在这个例子中,我们手动的将未到过期时间的key,成功设置为过期。

randomkey

随机返回key空间的一个key

1
2
3
4
127.0.0.1:6379> randomkey
"mylist5"
127.0.0.1:6379> randomkey
"myzset2"

通过结果可以看到取key的规则是随机的。

rename

重命名key

1
2
3
4
5
6
127.0.0.1:6379[1]> keys *
1) "age"
127.0.0.1:6379[1]> rename age age_new
OK
127.0.0.1:6379[1]> keys *
1) "age_new"

age成功的被我们改名为age_new了。

type

返回值的类型

1
2
3
4
5
6
127.0.0.1:6379> type name
string
127.0.0.1:6379> type myset
set
127.0.0.1:6379> type myzset
zset

服务器相关命令

ping

测试连接是否存活

1
2
3
4
5
6
7
8
127.0.0.1:6379> ping
PONG
// 执行下面命令之前,我们停止redis服务器
127.0.0.1:6379> ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused
// 执行下面命令之前,我们启动redis服务器
not connected> ping
PONG

echo

在命令行打印一些内容

1
2
127.0.0.1:6379> echo HongWan
"HongWan"

select

选择数据库。Redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据的存取

1
2
3
4
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index

quit

退出连接

1
2
127.0.0.1:6379> quit
root@test01:~#

dbsize

返回当前数据库中key的数目

1
2
127.0.0.1:6379> dbsize
(integer) 23

结果说明此库中有23个key。

info

获取服务器的信息和统计

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> info
# Server
redis_version:3.0.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:28b6715d3583bf8e
redis_mode:standalone
os:Linux 4.4.0-148-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:5.4.0
...

此结果用于说明服务器的基础信息,包括版本、启动时间等。

monitor

实时转储收到的请求

先在终端1输入monitor命令,将会进入等待状态

1
2
127.0.0.1:6379> monitor
OK

新建一个终端,输入一些redis命令

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
127.0.0.1:6379> keys *
1) "myset3"
2) "myset2"
3) "mylist7"
4) "mylist4"
5) "key1"
6) "myset7"
7) "name1"
8) "mylist6"
9) "myzset"
10) "mylist2"
11) "myset"
12) "mylist"
13) "myhash"
14) "myset4"
15) "name"
16) "myset5"
17) "myzset3"
18) "mylist3"
19) "mylist5"
20) "myzset2"
21) "mylist8"
22) "key2"
23) "myset6"
127.0.0.1:6379> get addr
(nil)

回到终端1中,我们将会看到打印出了刚才我们在终端2中敲入的redis命令

1
2
3
4
127.0.0.1:6379> monitor
OK
1558844434.297954 [0 127.0.0.1:34926] "keys" "*"
1558844444.673315 [0 127.0.0.1:34926] "get" "addr"

config get

获取服务器配置信息

1
2
3
127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"

本例中我们获取了dir这个参数配置的值,如果想获取全部参数据的配置值也很简单,只需
执行”config get *”即可将全部的值都显示出来。

flushdb

删除当前选择数据库中的所有key

1
2
3
4
5
6
127.0.0.1:6379> dbsize
(integer) 23
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> dbsize
(integer) 0

在本例中我们将0号数据库中的key都清除了。

flushall

删除所有数据库中的所有key

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 1
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 0

在本例中我们先查看了一个1号数据库中有一个key,然后我切换到0号库执行flushall命令,结果1号库中的key也被清除了,说明此命令工作正常。

数据相关命令

👉Redis-数据类型及操作