Redis 常用命令
前言
Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。在编程时,比如各类语言包,这些命令都有对应的方法。下面将Redis提供的命令做一总结。
键值相关命令
keys
返回满足给定pattern的所有key
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。
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是否存在
127.0.0.1:6379> exists HongWan
(integer) 0
127.0.0.1:6379> exists age
(integer) 1
从结果来数据库中不存在HongWan这个key,但是age这个key是存在的。
del
删除一个key
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> exists age
(integer) 0
expire
设置一个key的过期时间(单位:秒)
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转移到其它数据库中
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的过期时间
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
127.0.0.1:6379> randomkey
"mylist5"
127.0.0.1:6379> randomkey
"myzset2"
通过结果可以看到取key的规则是随机的。
rename
重命名key
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
返回值的类型
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
测试连接是否存活
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
在命令行打印一些内容
127.0.0.1:6379> echo HongWan
"HongWan"
select
选择数据库。Redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据的存取
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index
quit
退出连接
127.0.0.1:6379> quit
root@test01:~#
dbsize
返回当前数据库中key的数目
127.0.0.1:6379> dbsize
(integer) 23
结果说明此库中有23个key。
info
获取服务器的信息和统计
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命令,将会进入等待状态
127.0.0.1:6379> monitor
OK
新建一个终端,输入一些redis命令
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命令
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
获取服务器配置信息
127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"
本例中我们获取了dir这个参数配置的值,如果想获取全部参数据的配置值也很简单,只需
执行”config get *”即可将全部的值都显示出来。
flushdb
删除当前选择数据库中的所有key
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
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也被清除了,说明此命令工作正常。