Redis5.x单机服务搭建手记
Redis5.x
之后,单机、哨兵、集群搭建的难度已经简化。鉴于目前看到太多文章都是复制粘贴以往一些 3.x
版本的一些内容,所以打算基于当前 Redis
的最新版本做一次单机、哨兵和集群的搭建,记录一下过程步骤和遇到的问题。编写本文的时间是2019年10月5日(国庆假期…..),当前 Redis
的最新版本为 5.0.5 。操作系统用的是虚拟机里面安装的 CentOS 7
。
单机版安装和启动
编译过程依赖于 gcc
,记得先提前安装 gcc
:
yum install -y gcc
预先建一个目录 /data/redis
,下载并且解压安装包:
mkdir /data/redis cd /data/redis wget http://download.redis.io/releases/redis-5.0.5.tar.gz tar zxvf redis-5.0.5.tar.gz
接着进入解压后的目录 /data/redis/redis-5.0.5
,进行编译:
cd /data/redis/redis-5.0.5 # 这里的MALLOC=libc不能少 make MALLOC=libc
编译完成之后,可以看到类似如下的日志:
可选安装项:可以使用下面的命令把 /data/redis/redis-5.0.5/src
目录下的编译完成后的文件添加到系统的 /usr/local/bin
目录:
cd /data/redis/redis-5.0.5/src && make install
编译完成之后,注意 /data/redis/redis-5.0.5/src
目录下的几个重要的可执行脚本:
...... redis-benchmark - benchmark测试相关 redis-check-aof - AOE相关 redis-check-rdb - RDB相关 redis-cli - 命令行提示符入口 redis-sentinel - 哨兵相关 redis-server - Redis服务端指令 redis-trib.rb - Ruby脚本,集群相关 ......
单机启动需要使用 redis-server
脚本,它会读取 /data/redis/redis-5.0.5
目录下的 redis.conf
配置文件,在 /data/redis/redis-5.0.5
目录下有两个样板配置文件:
redis.conf - 单机配置文件 sentinel.conf - 哨兵配置文件
还有一点需要重点提示一下: /data/redis/redis-5.0.5/utils
目录下自带了一些十分有用的 Redis
服务安装、管理、集群创建等等的相关脚本,有使用场景的时候可以直接从里面拿出来使用 。
- 非后台启动
Redis
服务:
# 使用默认配置 /data/redis/redis-5.0.5/src/redis-server # 已经进入了 /data/redis/redis-5.0.5/src目录下 ./redis-server # 或者指定配置如下 /data/redis/redis-5.0.5/src/redis-server /配置目录/你的配置文件.conf # 已经进入了 /data/redis/redis-5.0.5/src目录下 ./redis-server /配置目录/你的配置文件.conf
非后台启动 Redis
服务,窗口需要一直打开,需要退出进程则按 Ctrl + C
,显然不是太方便。
- 后台启动
Redis
服务:
# 修改redis.conf文件的daemonize配置,笔者修改和使用/data/redis/redis-5.0.5/redis.conf 把daemonize no 修改为 daemonize yes保存 # 启动Redis服务 ./redis-server /data/redis/redis-5.0.5/redis.conf
- 查看
Redis
服务进程信息:
ps -ef | grep redis
- 强杀
Redis
服务进程
# 一般情况下,请勿使用kill -9,否则有可能造成数据丢失 kill -9 5365
- 安装
Redis
作为系统服务(可以使用系统命令管理,设置自启动等等):
# 注意:这里要先把../redis-5.0.5/src目录下的文件加到/usr/local/bin目录,如果已经添加过可以忽略这一步 cd /data/redis/redis-5.0.5/src/ && make install # 预先建立/etc/redis目录 mkdir /etc/redis # 依赖redis_init_script脚本,里面会读取/etc/redis/${PORT}.conf配置,需要提前建好 cp /data/redis/redis-5.0.5/utils/redis_init_script /etc/init.d/redis-doge # 拷贝配置文件 cp /data/redis/redis-5.0.5/redis.conf /etc/redis/6379.conf # 配置系统应用 cd /etc/init.d chkconfig redis-doge on
这里的 redis-doge
命名是笔者随意自定义,在个人开发环境可以这样做,测试或者生产环境尽量规范命名为 redis
或者 redisd
。做好上面的设置之后,就可以用系统服务的形式启动和关闭 Redis
服务:
配置文件redis.conf的常用配置项
解压目录下的样板配置文件 redis.conf
里面已经列举了 Redis
服务启动配置支持的全量配置项,里面的内容太多,这里暂时挑几个相对重要和常用的项做分析:
配置项 | 描述 | 默认值 |
---|---|---|
port |
Redis 服务的启动端口 |
6379 |
daemoniz |
Redis 服务是否后台运行 |
no |
pidfile |
Redis 服务 PID 寄存文件 |
/var/run/redis_6379.pid |
logfile |
Redis 服务输出日志文件 |
"" ,指向 /dev/null |
dbfilename |
Redis 服务数据库 dump 文件的名称 |
dump.rdb |
dir |
Redis 服务数据库 dump 文件的输出目录,也就是工作目录 |
./ ,也就是当前目录 |
appendonly |
是否启用 AOF |
no |
appendfilename |
启用 AOF 后输出的文件名称 |
appendonly.aof |
appendfsync |
AOF 策略 |
everysec |
requirepass |
Redis 服务数访问认证密码 |
– |
还有两个比较难理解的 bind
和 protected-mode
配置。
-
bind
:默认值为127.0.0.1
。
bind
配置的注释比较长,这里翻译和浓缩一下:默认情况下,如果没有指定 bind
配置,则 Redis
服务监听来自服务器上所有可用 网络接口( Network Interface
) 的连接。可以使用 bind
配置指令来监听一个或多个选定的网络接口,在 bind
后拼接一个或多个 IP
地址即可,如 bind 127.0.0.1 192.168.56.101
。 bind
参数配置里面 绑定的是网络接口而不是具体的外部 IP
地址,这一点很重要,不能错误认为这个配置项的功能类似于防护墙或者白名单提供的功能 。 127.0.0.1
其实对应的网络接口是本地的回环网卡,下面是笔者虚拟机的网卡信息:
-
protected-mode
:默认值为yes
。
protected-mode
配置表示保护模式是否开启,指定为 yes
表示为开启保护模式,指定为 no
表示关闭。开启保护模式之后,如果 bind
配置项没有绑定一些列的地址并且没有配置认证密码 requirepass
,那么 Redis
服务只允许通过本地回环地址 127.0.0.1(IPV4)
和 ::1(IPV6)
访问。
在个人开发环境中,为了方便起见,可以不设置密码,去掉网络限制和保护模式:
protected-mode no bind 0.0.0.0
- 上面的配置切勿在生产环境使用。
- 上面的配置切勿在生产环境使用。
- 上面的配置切勿在生产环境使用。
小结
如果属性 Linux
的相关命令, Redis
单机服务搭建是比较简单的。 Redis
服务的配置文件中配置项极多,一时间不可能全部列出,但是常用的配置必须清楚其的作用。下一篇文章会详细介绍 Redis5.x
的哨兵搭建过程以及遇到的问题。
(本文完 c-1-d e-a-20191005)