3. 初级篇:Redis 命令介绍

Redis常用命令详解

Redis命令介绍

redis的命令基本上可以分为几类,数据操作、配置修改、连接类、脚本执行、信息检索、以及事务类。(我自己分的,如果大家见解不一样,怎么熟悉就怎么记吧。)

通过上一篇我们对数据类型讲解和操作的时候,已经把数据操作类的命令全部给大家讲解并演示完成。那么在这里,我们主要讲对于server操作的,比如配置、或者信息查看的一些命令。其他的将在后续的章节中,陆续给大家讲解和演示。

Redis连接的简单命令

首先当我们使用一个Redis的时候,是否有安全限制的需求。

如果我们存放的数据是属于保密级别较高的数据的时候,我们不希望别人可以随意访问的时候我们应该如何处理。

又比如,别人给我一个server 地址和一个redis的客户端,在我们不能登录Linux服务器的查看进程的时候,我们如何来判定redis是否存活。等等一系列的问题,都可以通过命令的学习来完成。

1.ping

Redis可以在客户端后边直接执行命令。ping无实际意义,就是网络连通测试,客户端连通提示返回 PONG ,失败则 “Could not connect to Redis at 127.0.0.1:6379: Connection refused” 提示无法连接。

2.auth

解锁redis密码,比如我们通过配置文件中 requirepass 这个值设置了密码,我们在使用redis时,需要通过auth这个命令来解锁。否则提示未认证 ((error) NOAUTH Authentication required.) 也可以登录时,使用 -a 参数,指定密码 比如 ./bin/redis-cli -h 127.0.0.1 -p 6379 -a 123456 密码为123456

3.echo

验证输出,和Linux中shell的echo类似。

4.select

这个命令是值得详细讲解的,我们在 其他数据库 例如mysql的使用中,有数据库的概念,我们启动的是一个实例,具体使用某个库,需要use xxxdatabase 才行。

select 命令就是在redis实例中,选择一个库。

选择这个库之后,才可以使用我们存储的数据,进行查询,或者创建修改等等。数据库编号 ,需要使用数字表示,这个索引的起始值 0 ,select 0 的时候,就是我们默认登陆的这个库。

 

[root@redis2 redis]# ./bin/redis-cli -h 127.0.0.1 -p 6379 ping #验证客户端连通性
PONG
[root@redis2 redis]# ./bin/redis-cli -h 127.0.0.1 -p 6379 
127.0.0.1:6379> ping           #Redis ping命令验证客户端连通性
PONG
127.0.0.1:6379> 
127.0.0.1:6379> config set requirepass guzhou # 设置密码为  guzhou 。重启后失效,若长期使用需要在配置文件中配置。
OK
127.0.0.1:6379> quit
[root@redis2 redis]# ./bin/redis-cli -h 127.0.0.1 -p 6379 
127.0.0.1:6379> ping                        # 未输入密码,禁止使用
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth djklsf                 #若密码输入错误,提示无效密码
(error) ERR invalid password                
127.0.0.1:6379> auth guzhou                 #auth 输入正确密码后可使用数据库。
OK
127.0.0.1:6379> 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> echo "sjkdf"               #echo 命令直接输出
"sjkdf"
127.0.0.1:6379> config set requirepass ""  #设置密码为空,清空密码
OK
127.0.0.1:6379> 
127.0.0.1:6379> select 1                   #选择索引 1 的数据库,由于是一个新的库,可以看到库是空的,没有任何key。值得注意的时候,我们的连接提示发生了变化,显示多了一个 [1] 。
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> set name guzhou
OK
127.0.0.1:6379[1]> select 2               #我们选择 索引 2数据库的时候,是看不到 1 里边的内容的。
OK
127.0.0.1:6379[2]> keys *
(empty list or set)
127.0.0.1:6379[2]> 
127.0.0.1:6379[2]> select 1              #切回1 数据库,可以看到刚才设置的key。
OK
127.0.0.1:6379[1]> keys *
1) "name"
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> select 0              #切回默认初始的库,[1] 这个提示消失了,默认为 0 ,不提示。
OK
127.0.0.1:6379> 

 

查看Redis信息

1.info

我们可以通过info命令查看我们我们redis的全部信息。也可以查看指定的信息,比如 输入 info cpu 就可以看到CPU信息,或者 info Replication 可以查看目前主从复制的信息等等 ,输入info 后边不跟任何关键字,默认显示全部。

2.config get

查看数据库配置信息,比如 config get * 则是显示全部配置 ,如果config get save 后边输入某一个配置项,则输出配置项信息

1.png

上图,info命令的部分截图,不加选项默认全部

2.png

上图,info命令 指定仅查看 Replication 信息

3.png

上图,显示全部配置信息,其中 单数 为key ,双数为 value 。意思就是单数是配置项名称,双数的就是你配置。

4.png

上图,仅查看logfile的配置信息。

Redis配置命令之config set

在redis中,如何去配置或者重新设置我们的redis的配置选项,我们可以通过config set 命令来实现。

比如 config set maxmemory 1024 一些动态参数配置 等等。这里不再详细描述。

大家可以参考一下第二章或者多手动操作一下。需要重点记住的 只针对当前有效,重启后配置消失。如果修改的话,建议还是修改配置文件。

命令演示

1.client list

查看当前连接的客户端。

2.client kill

ip:port 可以杀掉某个连接,需要输入ip和端口

3.flushdb

删除当前库内所有数据,慎重执行,命令不会有确认提示。执行一定成功。刚才学过select 可以创建多个库,flushdb只对当前库生效,不会删除整个实例内全部的数据。

4.flushall

删除实例中所有数据,更慎重使用,针对实例生效,执行完成之后,将全部数据被删除。

 

127.0.0.1:6379> keys *  
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> flushdb   #删除当前库所有数据,针对当前库生效
OK
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 1
127.0.0.1:6379[1]> keys *   #[1] 索引为1的数据库内数据,执行flushdb后,未被删除。
1) "name"
127.0.0.1:6379[1]> 
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> mset name guzhou sex nan age 666
OK
127.0.0.1:6379> keys *
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> 
127.0.0.1:6379> flushall      #删除当前实例中所有数据。整个redis将被清空,请慎重使用。
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> 

5.BGREWRITEAOF

这个命令用于异步去执行aof 文件重写的操作。

会创建一个体积优于当前aof文件的版本。

假如命令执行失败,数据是不会有损失的,原来的aof文件不会被修改。

在2.4版本之后,AOF重写由redis自行触发,所以不做过多解释了。已经out了。

6.BGSAVE

在后台异步保存当前数据库的数据到磁盘。

在我们执行basave命令的时候,会直接返回OK。

redis会 fork出一个新的子进程来处理这个请求,原来的父进程会继续处理客户端请求,子进程把数据保存完成后退出。数据量较大时,可以通过ps命令查看到子进程信息。

这个操作并不会生成新的文件,而是会重写原来的rdb文件,也可以通过ls -ltr的命令,查看rdb文件的更新时间。

7.LASTSAVE

这个命令查看上次执行的bgsave命令完成时间。返回的为Unix 的时间戳

8.SAVE

命令保存当前redis实例的所有数据快照到磁盘,生产rdb文件的形式保存。

这个命令执行时,和bgsave不同,save为同步操作,为阻塞客户端所有操作,直接由redis进程完成。

导致在生产环境中,几乎不使用。简单来说,save在执行保存rdb文件的过程中,redis是不可访问的。由于这个特性,很少使用。

 

127.0.0.1:6379> bgsave
Background saving started
127.0.0.1:6379> 
127.0.0.1:6379> lastsave
(integer) 1552060701
127.0.0.1:6379> 

 

9.MONITOR 命令用来事实打印出 Redis 服务器接受到的所有命令。

5.png

上图是通过另外一个终端操作,可以通过下图观察到,monitor 可以实时的看到其他的操作。

6.png

 

127.0.0.1:6379> monitor
OK
第一列时间戳     [数据库索引号  IP:端口] 执行的命令 
1552061362.812452 [0 127.0.0.1:36690] "mset" "a" "123" "b" "456"
0是数据库索引号
1552061375.043987 [0 127.0.0.1:36690] "get" "a"

 

总结篇

希望大家熟练掌握这些命令,在使用和运维以及问题排查中,可以快速上手或者定位问题。 这一章节到此结束,希望大家多多关注。希望可以通过演示和讲解更加加深理解。

@版权声明:51CTO独家出品,未经允许不能转载,否则追究法律责任

版权声明:
作者:WaterBear
链接:https://l-t.top/2116.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录