1.2 Redis环境搭建

本节讲解如何在常见的操作系统上搭建和配置Redis的环境。读者可以从Redis官网下载最新版本的Redis安装包。

注意

Redis版本号采用标准惯例:主版本号.副版本号.补丁级别。偶数的副版本号用来表示稳定版本,如1.2、2.0、2.2、2.4、2.6、2.8等;奇数的副版本号用来表示非稳定版本,如Redis 2.9.x是非稳定版本,而Redis 3.0是稳定版本。

目前,Redis在Linux下的稳定版本是6.0.6,所以本书也选用这个稳定版本进行讲解。为了方便读者,本书搭建Redis环境所使用的Redis安装包和相关代码都托管到了GitHub,安装详细情况和下载地址请参见笔者的GitHub个人主页。

1.2.1 在Windows下安装Redis

本小节讲解在Windows下安装并配置Redis环境。Redis的Windows安装环境信息如表1-1所示。

表1-1 Redis的Windows安装环境信息

1.基于Windows 64位的Redis安装

Redis没有官方的Windows版本,但是微软开源技术团队(Microsoft Open Tech Group)长期开发和维护着这个基于Windows 64位的Redis版本,更多详细信息参考GitHub上的项目主页。进入主页,会发现有以下信息需要注意,如图1-4所示。

图1-4 需要注意的信息

Windows下的Redis具有以下特点。

·Redis服务器使用一个默认端口(6379)。

·微软开源技术团队只正式支持64位的Redis版本。如果需要的话,可以从源代码构建32位的Redis版本。

·可以从发布页面下载最新的未签名的二进制文件和未签名的MSI安装程序。

·对于Redis 2.8.17.1之前的版本,其二进制文件可以在源文件中的bin/release目录下的扩展名为.zip的文件中找到。

·签名的二进制文件可通过NuGet和Chocolatey获得。

·Redis可以作为Windows服务进行安装。

本小节中使用的是基于Windows 64位的Redis安装包。

访问Redis的官方下载地址,找到Windows 64位的Redis安装包Redis-x64-3.2.100.zip,如图1-5所示。

图1-5 下载Windows 64位的Redis安装包

Redis的Windows开源版本只支持Windows 64位。下载Redis-x64-3.2.100.zip安装包到D盘,解压缩后将文件夹重新命名为Redis,可以看到Redis文件夹中有如下文件,如图1-6所示。

图1-6 Redis文件夹中的文件

Redis的可执行命令和配置文件说明如下。

·redis-benchmark.exe:测试工具,测试Redis的读写性能情况。

·redis-check-aof.exe:用于数据导入,AOF文件修复工具。

·redis-cli.exe:Redis客户端(Client)程序。

·redis-server.exe:Redis服务器(Server)程序。

·redis.windows.conf:Redis在Windows下的配置文件,主要是一些Redis的默认服务配置,包括默认端口号(6379)等。

2.启动Redis服务器

在Windows下按“Win+R”组合键执行cmd命令,进入命令提示符窗口,cmd是command的缩写,是Windows下的一个命令。命令提示符窗口,如图1-7所示。

图1-7 命令提示符窗口

使用cd命令切换到D:\Redis目录下,再执行以下命令。


redis-server.exe Redis.windows.conf

执行命令后,如果在窗口中显示图1-8所示的信息,那么Redis服务器就启动成功了,在窗口提示中会带有Redis服务器的版本号、运行进程号(PID)、运行端口信息(Port),默认的监听端口是6379。

执行redis-server命令会启动Redis服务,是在前台控制台中直接运行的。也就是说,执行完该命令后,如果关闭当前命令提示符窗口,Redis服务也会关闭。因此一般会将其改为从后台的Windows服务启动,并且设置为开机自动启动,就像数据库服务器中的SQL Server服务和Web服务器中的IIS服务一样。这部分内容详见4.8.1小节Windows下Redis服务开机自启动。

图1-8 Redis服务器启动成功

还需要把Redis的安装目录添加到系统变量Path中。在桌面上右键单击“此电脑”,弹出快捷菜单,选择“属性”→“高级系统设置”→“高级”,单击“环境变量”按钮,弹出“环境变量”对话框,如图1-9所示。

图1-9 在Windows下配置Redis

在系统变量Path中添加以下变量值,也就是Redis的安装目录。


D:/Redis;

注意

(1)D:/Redis是笔者在本机上安装Redis的位置,读者需要根据自己计算机上的实际情况进行修改。

(2)D:/Redis是安装目录的路径,为了避免字符串转义,路径分隔符使用“/”。

(3)Windows系统变量Path中的变量之间使用“;”进行分隔。

3.启动Redis客户端

重新启动一个新的命令提示符窗口,原来的命令提示符窗口不要关闭,不然就无法访问Redis服务器了。在新的命令提示符窗口中执行以下命令启动Redis客户端。


redis-cli.exe -h 127.0.0.1 -p 6379

客户端的基本参数如下。


-h:设置检测主机IP 地址,默认为127.0.0.1
-p:设置检测主机的端口号,默认为6379

每次启动Redis客户端都需要输入redis-cli命令,这样操作不是很方便。在Windows下,我们可以新建一个批处理文件,命名为runRedisClient.bat,把启动Redis客户端的命令写在这个批处理文件里,以后只要单击这个批处理文件就可以启动Redis客户端了,如图1-10所示。该批处理文件存放在Redis/Chapter01目录下。

图1-10 启动Redis客户端

4.关闭Redis服务器

在Redis客户端执行shutdown命令,会关闭Redis服务器(如图1-11所示),然后持久化Redis内存中的数据到文件中。

图1-11 关闭Redis服务器

1.2.2 在Linux下安装Redis

本小节我们将在CentOS 7上通过root账号安装Redis,编译源代码,安装二进制文件,创建和安装文件。CentOS(Community Enterprise Operating System)是Linux发行版之一,它由Red Hat Enterprise Linux(RHEL)发布的源代码编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS代替商业版的Red Hat Enterprise Linux。

首先,从Redis官网下载最新的稳定版本的Redis源码包,本书使用的最新的稳定版本是Redis 6.0.6,如图1-12所示。

图1-12 下载最新的稳定版本的Redis源码包

Redis的Linux安装环境信息如表1-2所示。

表1-2 Redis的Linux安装环境信息

其次,安装gcc基础依赖包,使用如下命令。


$ yum –y install gcc-c++

再次,为了编译最新版本的Redis源码还需要使用devtoolset升级gcc版本。


$ yum -y install centos-release-scl
$ yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
$ scl enable devtoolset-9 bash
$ echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

安装devtoolset后,需要输入scl enable devtoolset-9 bash来启动devtoolset。启动devtoolset后仅针对本次会话有效,若重新登录Linux,需要再次使用scl命令激活devtoolset。

若要使devtoolset长期有效,需要输入echo"source/opt/rh/devtoolset-9/enable">>/etc/profile。

然后,输入gcc-v命令查看升级后的gcc版本,如图1-13所示,可以看出当前的gcc版本为9.3.1,使用这个版本的gcc来编译Redis源码。

图1-13 查看gcc版本

接着,建立Redis下载目录/upload,在这个目录里下载最新的稳定版本的Redis源码包。


$ mkdir /upload
$ cd /upload
$ wget http://download.redis.io/releases/redis-6.0.6.tar.gz

解压缩Redis源码包。


$ tar -xzvf redis-5.0.5.tar.gz

进入解压缩后的目录。


$ cd redis-6.0.6/

使用make命令编译Redis源文件。


$ make

编译成功后,安装Redis。


$ make install PREFIX=/usr/local/redis

注意

make命令使用的参数PREFIX代表安装路径,参数要大写。

执行make命令后会自动把Redis的可执行命令复制到/usr/local/redis/bin目录下,这样执行Redis命令时,就不用输入完整路径了。进入安装目录bin下,此时bin目录下的文件如图1-14所示。

图1-14 Redis的bin目录下的文件

Redis的bin目录下的文件说明如下。

·redis-benchmark:Redis性能测试工具。

·redis-check-aof:文件修复工具。

·redis-check-rdb:文件修复工具。

·redis-cli:Redis命令行客户端。

·redis-sentinel:Redis集群管理工具。

·redis-server:Redis服务进程命令。

安装成功后,需要对Redis进行部署,把Redis的配置文件redis.conf复制到/usr/local/redis/conf目录下。


$ mkdir -p /usr/local/redis/conf
$ cp redis.conf /usr/local/redis/conf

这时在/usr/local/redis/bin目录下就包含Redis所有可执行命令,在/usr/local/redis/conf目录下放置redis的配置文件redis.conf。部署后的Redis目录结构如图1-15所示。

图1-15 部署后的Redis目录结构

最后,将Redis的可执行命令所在目录添加到系统变量Path中,修改/etc/profile文件。


$ vi /etc/profile

在/etc/profile文件的最后一行添加以下内容。


export PATH=$PATH:/usr/local/redis/bin

然后输入source命令使这个文件立即生效。


$ source /etc/profile

至此,Redis在Linux上的安装和配置就结束了。

1.启动Redis服务器并加载指定配置文件

启动Redis服务器分为前台启动Redis服务器和后台启动Redis服务器。前台启动Redis服务器将占用当前命令行窗口。若从前台启动Redis服务器,执行redis-server命令时需要指定配置文件redis.conf。


$ redis-server /usr/local/redis/conf/redis.conf

前台启动Redis服务器成功后如图1-16所示。这个页面将占用命令行窗口,退出请按“Ctrl+C”组合键。

图1-16 前台启动Redis服务器

注意

这里直接执行redis-server命令来启动Redis服务器,是在前台直接运行的(效果如图1-15所示)。也就是说,执行完该命令后,如果Linux关闭当前会话,则Redis服务也随即关闭。

从后台启动Redis服务器,需要指定启动Redis的配置文件redis.conf。这部分内容详见4.8.2小节Linux下Redis服务开机自启动。

如果要从后台启动Redis服务器,还需要修改配置文件redis.conf里的daemonize对应的参数为yes。

2.查看Redis状态

启动Redis服务器后可以使用图1-17所示命令查看Redis的进程。

图1-17 使用ps命令查看Redis的进程

如图1-17所示,Redis的进程号是73459,可以执行kill-9<PID>命令关闭Redis进程。


$ kill -9 73459

也可以在控制台执行redis-cli shutdown命令关闭Redis。


$ redis-cli shutdown

3.启动Redis客户端

Redis服务器启动以后,就打开另一个客户端控制台(Terminal),输入redis-cli命令进行测试,检验是否成功连接本机的Redis服务器,如图1-18所示。

图1-18 客户端连接Redis服务器

如图1-18所示,说明Redis服务器已经正常工作,如果Redis服务器未启动,则执行redis-cli命令时会报Could not connect to Redis at 127.0.0.1:6379:Connection refused错误。

4.设置RDB快照地址

Redis提供了将内存中的数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能,Redis支持两种形式的持久化,一种是RDB快照(snapshotting),另一种是AOF(append-only-file),这部分内容在第5章Redis缓存持久化会详细解释。

其中RDB快照是把当前内存中的数据集快照写入磁盘,也就是快照(数据库中所有键值对数据)。快照的文件名默认是dump.rdb。这个dump.rdb文件存放位置是不固定的,默认存放在启动Redis服务器时的当前目录,有两种方法修改dump.rdb的存放位置。

方法一:使用CONFIG SET dir命令来手工指定dump.rdb的存放目录。


# 修改dump.rdb 文件的存放路径为/usr/local/redis/conf
127.0.0.1:6379> CONFIG SET dir /usr/local/redis/conf
OK
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/conf"

方法二:修改redis.conf配置文件里的dir配置项。


dir /usr/local/redis/conf

然后输入redis-server/usr/local/redis/conf/redis.conf,使用redis-server命令重新加载redis.conf配置文件,使Redis的配置文件生效。

5.开启Redis多线程

Redis 6加入了多线程功能。使用Redis 6来处理网络数据的读写和协议解析,执行命令依然是以单线程的形式,要开启Redis的多线程功能,可以在redis.conf配置文件中加入以下配置项。


io-threads-do-reads yes       # 开启IO线程 
io-threads 3                  # 设置IO线程数

io-threads线程数最多可设置为Linux服务器中CPU核心数的3/4,也就是说如果CPU有4个核心,尝试把这个值设置为3,如果CPU有8个核心,尝试把这个值设置为6。但不建议这个值超过8,当设置多于8个线程时,不会有明显的性能提升。查看Linux服务器CPU核心数的命令是lscpu,如图1-19所示。

图1-19 查看CPU核心数

可以看出CPU核心数为4,所以io-threads配置项设置为3,读者需要根据自己机器的实际情况进行修改。

6.关闭Redis服务器

在新的客户端控制台执行shutdown命令,会关闭Redis服务器,如图1-20所示。

图1-20 关闭Redis服务器

最后会显示图1-21所示的提示。

图1-21 Redis服务器关闭时的提示