redis实战2:redis的各种启动方式

前言:实战1中搭建了redis环境,并通过cli进行了数据的操作,我们启动的时候是用./redis-server启动的,cli启动的时候是用./redis-cli启动的。但实际情况中,我们不会这么简单的启动和连接。比如生产环境中,我们需要是用密码来保证安全,比如我们可能会改变port端口(默认为6379)。实战2说的就是分情况的启动。

说明:

server:redis数据库服务器

cli:redis数据库客户端

下面我所做的操作是在两个命令客户端操作,青绿色是操作的服务端,淡黄色是操作的客户端


1.通过指定端口号来启动redis(注意:(1)--port有两个--(2)下面的6390都是举例,请用你自己的

# ./redis-server --port 6390

启动过后,结果是这样的:

可以看到port变成了6390。

这时候我们用./redis-cli命令开启客户端,结果是这样的:

扫描二维码关注公众号,回复: 3196589 查看本文章

因为./redis-cli启动客户端的时候,还是默认连接的本地的6379端口,所以连接不上(毕竟没有这个服务)。我们改为:

# ./redis-cli -p 6390

执行过后,可以正常连接。

2.redis服务器的关闭(我们改回用默认端口启动)

我们是可以直接用ctrl+c来终止redis服务的。但在终止之前我们在客户端做两个操作,先来执行keys *(表示取出数据库中的所有key),然后做一个set操作,过程是这样的:

这是我们通过ctrl+c来终止redis服务。重新启动redis服务,重新用客户端执行keys *,我们得到的结果是这样的:

what?我们 set的new不见了。所以这种操作使我们数据丢失了。

那么我们使用第二种关闭服务的方法,在src下执行./redis-cli shutdown

# ./redis-cli shutdown

我们再执行一次set new new 操作,然后shutdown,像这样:

这时候,服务端打印日志是这样的:

说是DB saved on disk,也就是在硬盘上做了持久化。

所以我们得到结论:直接ctrl+c结束服务,将不会做持久化操作(也就是从内存中持久化到硬盘),通过cli的shutdown操作,会做持久化操作。(这个结论在windows下不成立,在windows下ctrl+c的终止方式也会进行持久化)

如果我们是用别的端口启动的比如说:# ./redis-server --port 6390,那么我们在shutdown时,要改成:

# ./redis-cli -p 6390 shutdown

不然不能关闭,因为关闭命令也是默认用的6379

说一下为什么我要改成默认端口:因为用命令行改变端口启动的方式,在shutdown的时候也不能进行持久化操作。也就是说只要用这种方式启动,那么我们暂时做不了持久化

3.使用配置文件启动(配置密码将包含在此)

我们在启动的时候可以设置配置文件。我们在redis的文件下有一个redis.conf配置文件。我们可以指定这个配置文件启动。

# ./redis-server ../redis.conf

同时我们可以修改里面的配置来满足我们的需求,比如修改:port(端口),requirepass(密码设置),masterauth(主从关系库设置)

我们将port设置为6390,requirepass打开(默认是关闭的),并设置为lexiaoyao,保存后启动数据库。

变成(lexiaoyao是我自己改的,主要关注第一个有注释,不启用密码,第二个没有注释,启动密码)

我们在用./redis-cli -p 6390登录发现能登录,但我们进行操作的时候,会变成这样:

也就是没有权限,所以我们需要用下面的命令登录:

# ./redis-cli -p 6390 -a lexiaoyao 

就会成功了:

这时候,我们的shutdown命令也会变成:

# ./redis-cli -p 6390 -a lexiaoyao shutdown

上面说过,如果我们用命令行的方式指定redis端口,无法进行持久化,但我们将端口设置在redis.conf中,再通过指定redis.conf启动,那么我们是可以通过shutdown命令进行持久化的。

masterauth说明:当用到redis的master-slave时,如果master设置了requirepass,那么slave的masterauth要设置相应的值

4.启动cli的时候,指定IP地址

不指定地址,默认连的是我们本机,如果指定地址(以本机为例),是这样的:

# ./redis-cli -h 127.0.0.1

当然这个命令可以和上面的密码,端口合起来用,可以是这样的:

# ./redis-cli -p 6390 -h 127.0.0.1 -a lexiaoyao

在shutdown命令的时候,也要指明相应的IP

总结:我们可以在学习过程中,直接使用默认启动,但实际生产中,我们需要配置requirepass来保证安全,通常是在redis.conf中配置。

猜你喜欢

转载自blog.csdn.net/jixinhuluwa/article/details/81074172