Redis 6.2.16 安装与配置(Linux)
Redis 是一个开源的内存数据结构存储系统,可用作数据库、缓存和消息代理。本文档将详细介绍如何在 Linux 系统上安装、启动和停止 Redis 6.2.16,并对 redis.conf 中的常用配置进行讲解,特别是端口号、密码、保护模式和监听 IP 等。
安装 Redis
按照以下步骤安装 Redis 6.2.16:
下载源代码
在终端中运行以下命令,将 Redis 6.2.16 源代码下载到 /home 目录:
cd /home
wget https://download.redis.io/releases/redis-6.2.16.tar.gz
解压文件
解压下载的压缩包:
tar -xzf redis-6.2.16.tar.gz
这将在 /home 目录下创建一个名为 redis-6.2.16 的文件夹。
编译 Redis
进入解压后的目录并编译 Redis:
cd /home/redis-6.2.16
make
可选:运行测试以验证构建是否正确:
make test
启动 Redis
您可以通过脚本或手动方式启动 Redis 服务。
使用脚本启动
以下是一个用于启动和停止 Redis 的脚本。将此脚本保存为 redis_control.sh,并赋予执行权限,然后使用 start 参数运行:
#!/bin/bash
# Redis启动和停止脚本
# Redis安装目录
REDIS_HOME=/home/redis-6.2.16
# Redis运行端口
REDIS_PORT=6379
# 启动Redis
start() {
echo "Starting Redis..."
cd $REDIS_HOME/src
nohup ./redis-server ../redis.conf >/dev/null 2>&1 &
echo "Redis is starting in the background."
}
# 停止Redis
stop() {
echo "Stopping Redis running on port $REDIS_PORT..."
PID=$(lsof -i :$REDIS_PORT | grep LISTEN | awk '{print $2}')
if [ -z "$PID" ]; then
echo "No Redis process found on port $REDIS_PORT."
else
kill -9 $PID
echo "Redis process $PID stopped."
fi
}
# 帮助信息
usage() {
echo "Usage: $0 {start|stop}"
exit 1
}
# 参数判断
case "$1" in
start)
start
;;
stop)
stop
;;
*)
usage
;;
esac
使用脚本的步骤:
-
将脚本保存为
redis_control.sh。 -
赋予执行权限:
chmod +x redis_control.sh -
启动 Redis:
./redis_control.sh start
使用脚本停止
使用上述脚本,运行:
./redis_control.sh stop
这将找到监听在 6379 端口的 Redis 进程并终止它。
Redis.conf 配置讲解
Redis 的配置文件 redis.conf 包含了许多配置项,下面重点讲解一些常用的配置,特别是与网络、安全性和性能相关的设置。
1. 网络配置
-
bind- 作用:指定 Redis 监听的 IP 地址。
- 默认值:
bind 127.0.0.1 -::1(只监听本地 IPv4 和 IPv6 回环地址) - 示例:
bind 0.0.0.0 - 说明:设置为
0.0.0.0表示 Redis 监听所有可用网络接口,适用于需要远程访问的场景。但若未设置密码,这可能带来安全风险。
-
port- 作用:指定 Redis 监听的端口号。
- 默认值:
6379 - 示例:
port 6379 - 说明:默认端口为
6379,可根据需要修改。
-
protected-mode- 作用:启用或禁用保护模式。
- 默认值:
yes - 示例:
protected-mode no - 说明:启用时(
yes),Redis 仅允许回环地址连接或在设置密码后允许远程连接。禁用(no)后允许任意 IP 连接,但需注意安全性。
2. 安全性配置
-
requirepass- 作用:设置 Redis 的访问密码。
- 默认值:无(注释掉)
- 示例:
requirepass your_password_here
-
rename-command- 作用:重命名或禁用危险命令。
- 默认值:无
- 示例:
rename-command CONFIG "" - 说明:可禁用如
CONFIG、FLUSHALL等命令以提高安全性。
3. 持久化配置
-
appendonly- 作用:启用或禁用 AOF(Append Only File)持久化。
- 默认值:
no - 示例:
appendonly yes - 说明:启用后,每个写操作追加到 AOF 文件,提供更高数据安全性。
-
save- 作用:配置 RDB 快照保存策略。
- 默认值:
save 900 1 save 300 10 save 60 10000 - 说明:表示 900 秒内至少 1 个键修改、300 秒内至少 10 个键修改、60 秒内至少 10000 个键修改时保存快照。
4. 性能配置
-
maxmemory- 作用:设置 Redis 可使用的最大内存。
- 默认值:无(不限制)
- 示例:
maxmemory 2gb - 说明:达到限制时,根据
maxmemory-policy策略回收内存。
-
maxmemory-policy- 作用:内存达到
maxmemory时的回收策略。 - 默认值:
noeviction - 示例:
maxmemory-policy allkeys-lru - 说明:
allkeys-lru表示对所有键使用 LRU(最近最少使用)算法淘汰。
- 作用:内存达到
5. 其他常用配置
-
daemonize- 作用:是否以守护进程方式运行 Redis。
- 默认值:
no - 示例:
daemonize yes - 说明:设置为
yes时,Redis 在后台运行。
-
logfile- 作用:指定日志文件路径。
- 默认值:
""(标准输出) - 示例:
logfile /var/log/redis.log - 说明:设置后,日志写入指定文件。
-
databases- 作用:设置 Redis 数据库数量。
- 默认值:
16 - 示例:
databases 16 - 说明:默认有 16 个数据库,编号 0 到 15。
示例 redis.conf 文件
以下是一个生产环境 redis.conf 示例,包含上述常用配置的设置,密码是123456re,端口号是6379:
########## 基础 ##########
bind 0.0.0.0
protected-mode no
port 6379
requirepass 123456re
daemonize no
supervised systemd
pidfile /var/run/redis_6379.pid
########## 日志 ##########
loglevel notice
logfile ""
always-show-logo no
########## 连接 ##########
tcp-backlog 65536
timeout 0
tcp-keepalive 60
maxclients 50000
########## 内存 ##########
# 0 表示不限制,由上层监控触发报警 + OOM Killer 兜底
maxmemory 0
maxmemory-policy allkeys-lfu
maxmemory-samples 10
# 在线碎片整理
activedefrag yes
jemalloc-bg-thread yes
########## 异步删除 ##########
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
lazyfree-lazy-user-del yes
########## 过期与调度 ##########
active-expire-effort 4
hz 25
dynamic-hz yes
########## 线程 & 内核 ##########
io-threads 4
io-threads-do-reads no
disable-thp yes
########## 持久化 (仅 AOF) ##########
save "" # 关闭 RDB
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 256mb
aof-use-rdb-preamble yes
rdb-save-incremental-fsync yes
aof-rewrite-incremental-fsync yes
stop-writes-on-bgsave-error no
########## 复制(如需) ##########
# repl-backlog-size 256mb
# repl-backlog-ttl 3600
########## 客户端缓冲 ##########
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 64mb 16mb 60
########## 其余保持默认 ##########