31

Redis服务之常用配置(一)

 3 years ago
source link: http://www.cnblogs.com/qiuhom-1874/p/13383166.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上一篇博客聊了下redis的简介以及redis的yum安装和源码编译安装需要注意到问题,回顾请参考 https://www.cnblogs.com/qiuhom-1874/p/13378138.html ;今天我们来对redis的配置文件相关资料和配置的使用和说明;

yum安装的redis默认版本是3.2.12,默认配置文件就是/etc/redis.conf;默认配置文件大概可以分如下段配置

[root@node1 ~]# grep "^###" /etc/redis.conf 
################################## INCLUDES ###################################
################################## NETWORK #####################################
################################# GENERAL #####################################
################################ SNAPSHOTTING  ################################
################################# REPLICATION #################################
################################## SECURITY ###################################
################################### LIMITS ####################################
############################## APPEND ONLY MODE ###############################
################################ LUA SCRIPTING  ###############################
################################ REDIS CLUSTER  ###############################
################################## SLOW LOG ###################################
################################ LATENCY MONITOR ##############################
############################# EVENT NOTIFICATION ##############################
############################### ADVANCED CONFIG ###############################
[root@node1 ~]#

提示:默认配置文件分了14个配置段,每个配置段都有相应的指令;

INCLUDE相关配置指令

Jr2qeee.png!web

提示:很多开源软件都支持include这个指令,把某个目录下的文件导入到指定位置做配置文件的方式(最常见的就是把某个目录下的以点conf结尾的文件导入到当前位置);以上红框中的内容表示把/usrlocal/reds/conf.d/test.conf文件都导入到此处;这里需要注意一点redis好像不支持以模式匹配的方式导入多个文件,必须单个导入,除此之外导入的文件必须得存在可访问;对于include指令放在哪个位置,需要自行定义,因为include以下的配置文件如果和include指定的文件配置有重复,以include之下的内容为准;也就说导入配置会覆盖导入配置之前的配置;

NETWORK相关配置指令

bind:该指令用于指定redis监听的ip地址,默认情况redis监听在本机的127.0.0.1这个回环地址上;

yuuqAnZ.png!web

提示:bind支持绑定多个ip地址,绑定多个ip地址,每个ip地址分别用空格隔开即可;如果想要监听在本机所有地址,可以写成bind 0.0.0.0或者注释bind指令,但是主注释bind指令对于开启了保护模式,虽然监听在本机所有地址,也能够连接redis,但是没法做任何操作;以上配置表示让redis监听在本机的127.0.0.1 和192.168.0.41这两个ip地址上;

验证:重启reids看看我们配置的地址是否处于监听状态?

mMNJjer.png!web

protected-mode:该指令用于指定是否开启保护模式;所谓保护模式就是如果redis在没有配置密码,也没有配置bind地址,即便监听在本机的所有地址,远程客户端是可以连接到redis,但是没法正常使用;yes表示开启保护功能;no表示不开启此功能;

eMjUjaR.png!web

提示:以上配合表示开启保护模式,这也就意味着,如果我们在配置文件中如果没有配置bind监听地址和设置密码,那么redis是不能被远程连接够使用的;

验证:把redis的bind指令注释掉,然后重启服务,使用另一台客户段连接192.168.0.41,看看是否可以用?

bMnIBbV.png!web

提示:注释掉bind指令,重启redis后,默认后监听在本机所有地址上;

测试:本机是否可连接使用redis?

RFR7vqI.png!web

提示:本机上可以正常连接和使用redis

非本机客户端是否可以连接使用呢?

nyq6B3.png!web

提示:可以看到用非本机客户端是可以正常连接到redis,但是没有办法执行命令,它告诉我们redis开启了保护模式,解决上面的报错,可以把保护模式关闭了(关闭保护模式可以使用CONFIG SET protected-mode no 这种就是在终端直接使用命令关闭(非当前终端,可以使用本机连接的终端上使用);第二中方式就是在配置文件中把protected-mode 配置成no,然后重启redis;第三种是停掉当前redis,启动时加上--protected-mode no选项启动;),其次就是给redis设置一个密码或者启动bind指令监听一个可用地址即可;

测试:在本机上使用连接redis-server的方式在终端命令行中使用CONFIG SET protected-mode no命令关闭保护模式

nAVb2eY.gif

提示:可以看到在本机连接终端上执行CONFIG SET protected-mode no 命令后,在非本机连接的客户端终端就可以操作red

port:该指令用于指定redis TCP套接字监听端口,默认是6379;如果使用0 表示不监听tcp套接字

J3uuam.png!web

提示:以上配置表示redis使用TCP套接字的6380端口对外提供服务;

验证:重启redis服务,看看对应6380端口是否处于监听状态,redis-cli 是否可以连接6380使用redis?

VVzIJz.png!web

提示:重启服务6380端口正常监听,用redis-cli也是可以正常连接访问redis;这里需要注意用-p指定端口需要有空格;

tcp-backlog:该指令用于指定TCP三次握手的时候 server 端收到 client ack 确认号之后的队列值默认是511;通常会这个选项不需要我们去额外的更改,用默认的511是可以的;

unixsocket:该指令用于指定本地使用unix socket 方式连接时监听的UNIX SOCKET文件路径;

unixsocketperm:该指令用于指定UNIX SOCKET文件的权限;

示例:启用UNIX SOCKET

ZjmMvqa.png!web

验证:重启redis服务,然后使用unix socket方式连接本机redis

Uz26Rzj.png!web

提示:redis-cli命令 -s选项用于指定socket文件路径;从上面的测试可以看到,重启redis后,在对应目录下就生成了在配置文件中我们指定的名称的sock文件;用redis-cli客户端软件使用/tmp/redis.sock文件连接redis也是可以正常操作redis;

timeout:该指令用于指定客户端和 Redis 服务端的连接超时时间,默认是 0,表示永不超时。

tcp-keepalive:该指令用于指定tcp连接的会话保持时间,默认配置是300秒。

GENERAL相关配置指令

daemonize:该指令用于指定是否让redis运行为后台守护进程运行,默认是no;如果你想让它在后台运行,你就把它改成yes,当 redis 作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面;

示例:配置redis运行为后台守护进程

YvqeYjj.png!web

验证:重启redis,看看是否能够运行为后台守护进程?

fUBFZfV.png!web

提示:可以看到我们不用systemctl 去运行redis也可以让redis运行为后台,并且使用redis-cli工具也可以正常连接redis对它进行操作;

supervised:该指令用于指定redis操作系统相关参数,默认是no;可以设置通过 upstart 和 systemd 管理 Redis 守护进程,centos 7以后都使用 systemd;

pidfile:该指令用于指定redis pid文件;默认是/var/run/redis_6379.pid;

miQZNb.png!web

提示:我这边测试不管是编译还是yum安装,它默认能够启动起来,但是在/var/run/目录下就找不到对应redis的pid文件;后续看了下目录的权限,发现用root启动redis在对应目录下就能创建pid文件,普通用户就不行;

验证:启动reids,在/var/run/目录下看看是否有redis_6379.pid文件?

FzY3u2J.png!web

提示:可以看到redis启动了,但是没有找到pid文件;大概是权限的问题吧;

验证:把/var/run/目录添加一个redis用户可以写的权限,然后重启redis,看看对应目录下是否可生成pid文件?

quqUFj.png!web

提示:可以看到,当我们给对应目录增加了acl权限以后,重启redis,pid文件就生成了;对于这种,建议还是单独建立一个目录,把权限都给redis用户,然后配置pidfile 指向新建的目录;

loglevel:该指令用于指定redis日志的级别,默认是notice级别;

logfile:该指令用于指定redis日志文件路径;默认是/var/log/redis/redis.log;

syslog-enabled:该指令用于指定是否启用syslog记录redis日志;默认是no,不启用;

syslog-ident:该指令用于指定syslog的标识,默认是redis

syslog-facility:该指令用于指定使用syslog的那个设施来记录redis日志;默认是local0

示例:开启rsyslog记录redis日志

IrUN3iz.png!web

提示:以上配置是在redis上开启了让rsyslog记录日志,把redis的日志发送到local0这个设施上;

在rsyslog中定义local0把日志记录到某个文件中

ZNJ3qqq.png!web

提示:以上配置是表示把local0这个设施上的任何级别日志都记录到/tmp/test.log中;

验证:重启rsyslog和redis 看看/tmp/test.log中是否记录redis的日志?

niiYZrM.png!web

提示:可以看到重启了rsyslog和redis后在/tmp/test.log中就记录了redis的启动日志信息;

3UFnAbA.png!web

提示:其实默认情况redis rsyslog会把系统上的info级别以上的日志都记录到/var/log/messages这个文件中,所以我们启动redis可以在/var/log/messages这个文件中看到redis的日志,也可以在/var/log/redis/redis.log中看到redis的日志;通常情况不建议让redis的日志写多份,建议还是用logfile指定日志文件,然后不启用rsyslog;

databases:该指令用于指定redis的数据库数量;默认人库是0;就是说这个指令指定的值可以限定redis最大能有多少个数据库,默认情况redis最大支持16个库;当然如果16个库少了,我们可以通过调整databases的值,来调大支持的数据库数量;

示例:默认不更改databases的值,连接数据库,用select命令看看最大能够切换到那个库?

IjEn6bA.png!web

提示:redis里的数据库都是以数字命名的,不像mysql里的可以用字符串命名;select命令是用于切换数据库,类似mysql里的use命令;从上面的信息可以看到,我们在配置文件中指定databases为16,客户端连接redis最大也只能切换到15号库,这是因为redis数据库是从0号库开始的;


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK