Redis在Linux服务器上编译安装与配置

1,236 阅读6分钟

Redis是现在最受欢迎的NoSQL数据库之一,在Linux下Redis支持源码编译安装和包管理器安装的方式,其中包管理器安装比较简单,根据官方文档的命令就行,这里主要讲解一下源码编译安装方式。

1,下载Redis源码并解压

官网下载页面下载源码(备用地址,提取码2333)。

进入下载页面划到最下面找到Additional download options,并展开Install from source如下:

image-20250527100518760

点击下载最新的稳定版:

image-20250527100556659

例如我这里下载了一个redis-stable.tar.gz的文件,解压至当前目录并进入解压的文件夹(命令中操作的文件名根据自己下载的而定,此处命令以我自己的为例):

tar -xvf redis-stable.tar.gz
cd redis-stable

此外,历史版本可以到官方Github仓库的Releases中下载:传送门

2,编译源代码

需要注意的是,Redis可以仅编译其本体核心,也可以编译全部模块,本体核心仅支持核心数据结构,在大多数情况下够用了。而编译全部模块则支持更多数据结构,例如JSON、时间序列等。

这里同时讲解两种方法,大家选择其一即可。

(1) 最小编译

最小编译仅编译其本体核心,只支持核心数据结构。

首先需要安装编译Redis必要的库和工具,通过以下命令安装:

sudo apt install make gcc libc6-dev libssl-dev

然后开始编译Redis,刚刚已经解压并进入其源码目录了,现在执行以下命令编译:

# 设定环境变量
# 使用Fish Shell时,请使用set -x BUILD_TLS yes的形式设定环境变量
export BUILD_TLS=yes

# 执行构建,使用全部CPU核心
make -j $(nproc)

等待编译完成,显示Hint: It's a good idea to run 'make test' ;)字样时说明编译成功了。

若在编译中遇到任何错误需要再重新编译,需要先清理已编译部分,执行命令:

make distclean

然后就可以重新make了。

(2) 完整编译

完整编译需要安装更多的依赖,且会编译所有的模块,支持更多功能。完整编译会自动下载一些其它环境,建议在Debian 12的Docker容器中进行编译

首先还是安装依赖:

apt install sudo
sudo apt install ca-certificates wget dpkg-dev gcc g++ libc6-dev libssl-dev make git cmake python3 python3-pip python3-venv python3-dev unzip rsync clang automake autoconf libtool

在开始编译之前,如果你的网络连接Github不通畅,建议先设定代理服务器,因为完整编译时会从Github下载一些模块源码,使用下列命令设定代理环境变量:

export http_proxy=http://代理服务器地址:端口
export https_proxy=http://代理服务器地址:端口

然后在Redis源码目录执行下列命令编译:

# 设定编译环境变量
export BUILD_TLS=yes
export BUILD_WITH_MODULES=yes
export INSTALL_RUST_TOOLCHAIN=yes
export DISABLE_WERRORS=yes

# 执行构建,使用全部CPU核心
make -j $(nproc) all

最后,出现Build completed.说明编译完成。

3,安装Redis

编译完成后,就可以安装Redis可执行文件了,通过以下命令安装Redis到系统:

sudo make install

若想把Redis安装至指定位置,可以使用如下命令:

make PREFIX=想要安装到的位置(绝对路径) install

例如安装到/home/swsk33/redis

make PREFIX=/home/swsk33/redis install

这时,Redis便编译并安装完成了!

4,编写配置文件并启动Redis

这个时候其实通过直接输入redis-server便可以直接启动了,Redis可以指定配置文件运行,最好是通过配置文件启动。

先自己新建一个文件,例如redis-config.conf,自己加入配置内容。

常见的配置如下:

配置项说明
daemonize yes/noRedis 默认不是以守护进程的方式运行,可以通过该配置项修改,使用 yes 启用守护进程打开即启动后使redis服务端后台运行
pidfile pid文件位置当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定
port 自定义端口号指定 Redis 监听端口,默认端口为 6379
bind 绑定的ip地址绑定的主机地址。若不写这一行,则外网所有的电脑都可以连接此服务器的redis
timeout 毫秒当客户端闲置多长秒后关闭连接,如果指定为 0 ,表示关闭该功能
loglevel 日志级别指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 notice
logfile 日志文件位置指定日志文件位置,默认不输出日志到文件
dbfilename 数据库名.rdb指定本地数据库文件名,默认值为 dump.rdb
dir 数据库存放目录指定本地数据库存放目录,默认存放在当前目录下
requirepass 密码设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 auth 密码命令提供密码,默认关闭例如设置密码为123456:requirepass 123456
maxclients 最大连接数设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息
maxmemory 最大内存占用字节数指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区
vm-enabled yes/no指定是否启用虚拟内存机制,默认值为 no,简单的介绍一下,VM 机制将数据分页存放,由 Redis 将访问量较少的页即冷数据 swap 到磁盘上,访问多的页面由磁盘自动换出到内存中

上面配置不需全部写入。例如我的配置文件如下:

port 25002
dir /root/Temp/db
requirepass 12345678

建议requirepass最好写上保证安全。如果有需要可以用bind配置绑定ip地址,这样只有绑定的ip地址才能访问redis数据库。

然后启动redis服务端:

redis-server 配置文件位置

例如我的:

redis-server /home/swsk33/redis/redis-config.conf

若上面make install时使用了自定义的安装位置(使用了PREFIX参数),那么需要进入你的安装目录下的bin文件夹里面再执行命令:

./redis-server 配置文件路径

显示这个画面说明启动成功:

image.png

服务器上建议使用screen软件新建一个窗口在里面运行Redis服务端,这样可以使其挂在服务器上面运行,screen的使用此处不再赘述。

5,远程连接Redis服务端

远程连接时须确保没有配置bind值或者bind值是你的IP地址,且端口开放。远程连接也需要在自己的电脑上编译并安装Redis,Windows编译可自行百度,方法类似。

此处以Linux电脑远程连接为例,通过以下命令连接:

redis-cli -h 服务器ip -p redis的端口

本地连接也是这个命令,IP地址是127.0.0.1

连接上后会进入Redis命令行:

image.png

然后使用AUTH命令输入密码认证:

auth Redis密码

密码就是前面配置文件中requirepass的配置值。

输出OK说明连接认证成功!

最后使用quit或者exit命令断开连接。