Redis(开发与运维):04---Redis的启动连接/外网连接关闭可执行文件与配置参数大全

Posted 董哥的黑板报

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis(开发与运维):04---Redis的启动连接/外网连接关闭可执行文件与配置参数大全相关的知识,希望对你有一定的参考价值。


一、Redis的可执行文件

  • 当我们安装完Redis之后,src和/usr/local/bin目录下提供了下面这些可执行程序,我们称之为Redis Shell:

redis-server

Redis服务器

redis-cli

Redis命令行客户端

redis-benchmark

Redis性能测试工具

redis-check-aof

Redis AOF持久化文件检测和AOF文件修复工具

redis-check-dump

Redis RDB持久化文件检测和文件检查工具

redis-sentinel

Sentinel服务器(Redis2.8版本之后)

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis

二、Redis配置文件

  • Redis的默认配置文件:
  • 在下载的redis源码包根目录下有一个名为redis.conf的配置文件,这个配置文件中的参数是redis服务器启动的默认参数(备注:但是redis-server启动不是使用这个配置文件
  • 如果你想自己设置配置参数,可以拷贝这个配置文件然后修改,在redis-server启动时指定配置文件的路径

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis_02

  • 相对于很多大型存储系统,Redis的配置不是很多,到了Redis3.0之后有60多个


①单机模式下的配置参数

  • 总体配置:下图是Redis的一些总体配置,例如端口、日志、数据库等

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_03

  • 最大内存及策略:下图是Redis内存相关配置

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_连接redis_04

  • AOF相关配置:下图是AOF方式持久化相关配置

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_Redis的启动关闭_05

  • RDB相关配置:下图是RDB方式持久化相关配置

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_06

  • 慢查询配置:下图是Redis慢查询相关配置,在中有详细介绍

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_连接redis_07

  • 数据结构优化配置:下图是Redis数据结构优化的相关配置,在前面“内存”的相关文章有详细介绍

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis_08

  • 复制相关配置:下图是Redis复制相关的配置

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_连接redis_09

  • 客户端相关配置:下图是Redis客户端的相关配置

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis可执行文件_10

  • 安全相关配置:下图是Redis安全的相关配置

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_11

②Sentinel配置说明和分析

  • Sentinel节点是特殊的Redis节点,有几个特殊的配置,如下图所示

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_12

③Cluster配置说明和分析

  • Cluster节点是特殊的Redis节点,有几个特殊的配置,如下图所示

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_Redis的启动关闭_13



CONFIG SET、CONFIG GET命令

  • 我们可以在不重新启动Redis的情况下动态修改部分Redis配置(注:并不是所有的配置都支持CONFIG SET命令,具体见上图)

CONFIG SET loglevel warning

  • 我们也可以通过CONFIG GET来获取一个配置的值:1)是配置选项名称,2)是选项值

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis可执行文件_14



requirepass配置参数

  • 该参数用于权限控制。当设置了这个参数之后,客户端连接时就需要输入密码才可以连接到服务器
  • 下面进行一个演示案例。例如在配置文件中加入该参数,密码为“dongshao”

requirepass dongshao

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis_15

  • 重启redis服务器,然后再使用上面的配置文件启动redis(此处我们的redis以守护进程运行的)

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_连接redis_16

  • 此时我们使用redis-cli虽然可以连接上服务端,但是输入命令都无权限,需要认证

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis可执行文件_17

  • 此时我们需要输入auth命令和密码进行认证,认证完之后就可以进行操作了

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis_18

  • 当然,我们也可以通过redis-cli的“-a”参数指定连接时的密码,这样就不需要输入auth命令进行认证了。备注:不建议这样做,因为密码可能会外漏

redis-cli -a dongshao

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_Redis的启动关闭_19



多线程相关的配置参数

  • 在redis 6.0之后支持多线程了
  • io-threads-do-reads配置参数:要开启多线程,那么需要在配置文件中将该参数设置为yes

io-threads-do-reads on;

  • io-threads配置参数:该参数用来设置线程的数量

io-threads 4;

  • 线程数的设置建议:官方有一个建议,4 核的机器建议设置为2或3个线程,8核的建议设置为6个线程,线程数一定要小于机器核数



bind配置参数

  • 该参数代表redis服务端接受从哪些网络通道传来的网络流量
  • 例如,下面服务端只接受127.0.0.1和172.17.0.14网段的网络流量

bind 127.0.0.1 172.17.0.14

  • 备注:Redis3.0中bind默认值为””,也就是不限制网卡的访问,但是在Redis3.2 中必须显示的配置bind 0.0.0.0才可以达到这种效果



protected-mode配置参数

  • Redis3.2提供了protected-mode配置(默认开启)
  • 功能:如果当前Redis没有配置密码,没有配置bind,那么只允许来自本机的访问,也就是相当于配置了bind 127.0.0.1
  • 演示案例:下面redis服务端开启了该配置参数,且配置文件中没有配置密码,也没有配置bind,当外网访问时显示不能访问

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_连接redis_20


三、Redis服务端的启动

  • 有三种方法启动Redis:默认配置启动、运行配置启动、配置文件启动


①默认配置启动

  • 直接运行redis-server即可启动Redis:

sudo redis-server

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_21

  • 这种方法会使用Redis的默认配置文件来启动Redis,例如Redis默认配置文件中指定Redis的端口号为6379、当前版本为6.0.1
  • 实际生产环境中一般不使用这种方法来启动Redis,因为无法自定义配置



②运行配置启动

  • 我们在运行时可以指定配置名和值(可以是多对),没有配置的将仍然使用默认配置
  • 例如,下面以6380端口启动Redis,其他参数仍使用默认值

sudo redis-server --port 6380

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_Redis的启动关闭_22

  • 这种方法也不建议使用,因为如果修改的配置较多的话那么比较麻烦,并且这种参数不能保存到文件中



③指定配置文件启动

  • 将配置写到指定文件里,例如我们将配置写到了/opt/redis/redis.conf,那么可以执行下面的命令启动redis:

sudo redis-server /opt/redis/redis.conf

  • 比较建议使用这种方式启动Redis
  • redis有60多个配置参数,在上面介绍了一些,后面文章还会介绍更多。下面列出了一些重要配置参数:

参数

说明

daemonize

是否以守护进程模式运行Redis

pidfile

设置Redis的PID文件位置

logfile

日志文件位置

port

设置Redis监听的端口号

dir

Redis工作目录(存放持久化文件和日志文件)


  • 我们也可以在启动时同时指定配合文件和配置选项,那么命令行的配置选项就会覆盖配置文件中的参数。例如:
redis-server  配置文件名.conf  --loglevel warning

四、Redis服务端的关闭


shutdown命令

  • 正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:
  • 当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出
  • Redis可以妥善处理SIGTERM信号,所以使用kill Redis进程的PID也可以正常结束Redis,效果与发送SHUTDOWN命令一样
  • ①如果客户端还没有与服务端进行连接,那么可以执行在命令行输入下面的命令来关闭服务端:

redis-cli SHUTDOWN

  • ②如果客户端工具已经连接入服务端,那么直接输入SHUTDOWN即可:

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis可执行文件_23

  • shutdown还有nosave和save参数,代表是否在关闭Redis前,生成持久化文件

redis-cli shutdown nosave|save


  • 考虑到Redis有可能正在将内存中的数据同步到硬盘中,强行终止Redis进程可能会导致数据丢失,因此不建议使用kill-9强制杀死Redis服务,不但不会做持久化操作,还会造成缓冲区等资源不能被优雅关闭,极端情况会造 成AOF和复制丢失数据的情况

五、Redis服务端的重启

  • 使用软件包编译安装的redis不支持重启操作,只能通过redis-cli进行SHUTDOWN关机然后再重新开启服务端
  • 但是如果使用apt-get或yum形式安装的redis支持重启(见文章最后)

六、连接到Redis服务端

  • 使用redis-cli可以连接到redis服务端,有两种连接方式


①交互式连接

  • 第一种是交互式方式,连接之后不会退出redis-cli命令行
  • 例如,下面连接到IP为127.0.0.1、端口为6379的redis服务端

redis-cli -h 127.0.0.1 -p 6379

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis可执行文件_24

  • 可以不写-h和-p参数,它们的默认值分别为127.0.0.1和6379



②命令方式连接

  • 第二种是命令方式连接,只连接一次就断开
  • 例如,下面连接的时候获取一次hello的值就退出

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_25


  • 关于redis-cli在后面会详细介绍,​​​

七、redis设置允许外网连接

  • 设置方法如下:
  • 第一步:注释掉配置文件中的bind参数
  • 第二步:如果你的bind参数被注释了,那么还要分为以下两种情况:
  • 如果没有为redis设置密码(也就是没有设置requirepass配置参数),那么需要将protected-mode配置参数更改为no
  • 如果你的redis设置了密码(也就是设置了requirepass配置参数),那么不需要更改protected-mode配置参数


演示案例

  • 机器A(公网111.229.177.161):其启动的redis服务器的配置文件中含有bind参数,且protected-mode为yes

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis_26

  • 当机器B(一个局域网的机器)去连接时,显示无法连接

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_连接redis_27

  • 现在我们将机器A配置文件中的bind注释掉,又因为配置文件中没有设置密码(requirepass配置参数),那么同时需要将protected-mode设置为no

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis_28

  • 此时机器B再去连接,就可以连接成功了

Redis(开发与运维):04---Redis的启动、连接/外网连接、关闭、可执行文件与配置参数大全_redis配置文件_29


八、软件包安装的redis的开机、关闭、重启

  • 如果是使用apt-get或yum形式安装的redis,那么支持下面的几种方式
sudo /etc/init.d/redis-server stop    #关机
sudo /etc/init.d/redis-server start #启动
sudo /etc/init.d/redis-server restart #重启


以上是关于Redis(开发与运维):04---Redis的启动连接/外网连接关闭可执行文件与配置参数大全的主要内容,如果未能解决你的问题,请参考以下文章

Redis 开发与运维Redis Sentinel 哨兵

Redis开发与运维

《Redis开发与运维》

redis 开发与运维 学习心得

Redis 开发与运维复制

Redis 开发与运维开发运维的“陷阱”