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

听闻少年二字,当与平庸相斥。这篇文章主要讲述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配置文件
  • Redis的默认配置文件:
  • 在下载的redis源码包根目录下有一个名为redis.conf的配置文件,这个配置文件中的参数是redis服务器启动的默认参数(备注:但是redis-server启动不是使用这个配置文件)
  • 如果你想自己设置配置参数,可以拷贝这个配置文件然后修改,在redis-server启动时指定配置文件的路径

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


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

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

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

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

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

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

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

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

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

②Sentinel配置说明和分析
  • Sentinel节点是特殊的Redis节点,有几个特殊的配置,如下图所示

③Cluster配置说明和分析
  • Cluster节点是特殊的Redis节点,有几个特殊的配置,如下图所示





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


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





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



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

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

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

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







多线程相关的配置参数
  • 在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服务端的启动
  • 有三种方法启动Redis:默认配置启动、运行配置启动、配置文件启动


①默认配置启动
  • 直接运行redis-server即可启动Redis:
sudo redis-server



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




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



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




③指定配置文件启动
  • 将配置写到指定文件里,例如我们将配置写到了/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即可:

  • shutdown还有nosave和save参数,代表是否在关闭Redis前,生成持久化文件
【Redis(开发与运维):04---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



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




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



  • 关于redis-cli在后面会详细介绍,????
七、redis设置允许外网连接
  • 设置方法如下:
  • 第一步:注释掉配置文件中的bind参数
  • 第二步:如果你的bind参数被注释了,那么还要分为以下两种情况:
  • 如果没有为redis设置密码(也就是没有设置requirepass配置参数),那么需要将protected-mode配置参数更改为no
  • 如果你的redis设置了密码(也就是设置了requirepass配置参数),那么不需要更改protected-mode配置参数


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

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

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

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



八、软件包安装的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 #重启




    推荐阅读