Redis 安装与配置教程:缓存、持久化、密码与常用命令,网站提速火力全开


网站访问量上来后,响应变慢的第一个拦路虎往往是数据库。每次请求都直连 MySQL 查一遍,又慢又费资源。Redis 是当下最流行的内存数据库,把热点数据放在内存里,读写是磁盘的几十倍,是建站提速、缓存热数据的首选。这篇文章从安装、配置、密码、持久化到常用命令,手把手把 Redis 配到能投产使用。

一、Redis 能干什么

Redis 是 K-V(键值)内存数据库,常用场景:

  • 页面/接口缓存:把数据库查询结果、整页 HTML 缓存起来,下次直接读内存
  • Session 存储:多台服务器共享登录态
  • 计数器/排行榜:当天访问数、点赞、热点排名
  • 消息队列:简单的发布订阅、延迟队列

对个人站长最直接的价值就是:让高频数据库查询走内存,源网站秒开。

二、安装 Redis

Ubuntu / Debian:

apt update
apt install -y redis-server

CentOS / AlmaLinux:

yum install -y redis

安装后检查版本并设置开机自启:

redis-cli --version
systemctl enable redis           # Ubuntu 的远古版本可能叫 redis-server
systemctl start redis

三、基础配置(重要)

Redis 主配置文件通常在 /etc/redis/redis.conf。先做三件事:绑定地址、设密码、关危险命令。

1. 设置绑定地址与端口:

# 默认只监听本机,外部无法直连(安全起见保持即可)
bind 127.0.0.1 -::1
port 6379

个人网站自己用,通常 Redis 和 PHP/Java 在同一台机器,保持只对本机即可,别暴露公网。

2. 设置访问密码(必做):

# 用一条尽量复杂的密码替换
requirepass My_Secure_Redis_Pass_2024

设置后,命令行连接要带 -a 或登录后 AUTH:

redis-cli -a My_Secure_Redis_Pass_2024

3. 禁用危险命令(防止被入侵后删库/执行):

rename-command FLUSHALL ""
rename-command FLUSHDB ""

改完重启生效:

systemctl restart redis

四、验证是否正常工作

# 交互测试(带密码)
redis-cli -a My_Secure_Redis_Pass_2024 ping
# 返回 PONG 即正常

ping 返回 PONG,说明 Redis 已经在运行。

五、常用命令速记

字符串(最常用):

SET key value
GET key
SET key value EX 3600    # 设置 1 小时过期
TTL key                  # 查看剩余过期时间
DEL key

列表 / 哈希 / 集合:

LPUSH list value1 value2    # 从左侧压入
LRANGE list 0 -1            # 查看全部
HSET h field value          # 哈希
HGETALL h
SADD set val1               # 集合
SMEMBERS set

发布订阅:

PUBLISH channel msg
SUBSCRIBE channel

六、设置持久化(防止重启数据丢失)

Redis 默认开启 RDB 快照,但为了更稳妥,可配合 AOF。在配置文件里:

# RDB 快照(默认开启,多少秒写多少条就落盘一次)
save 900 1
save 300 10
save 60 10000

# AOF:每条写操作追加到文件,数据更保险
appendonly yes
appendfsync everysec

RDB 是定期快照,恢复快、文件小;AOF 记录每条命令,丢失更少。两者可同时开。改完重启生效。

七、内存与淘汰策略

Redis 存的是内存,不能无限涨。设一个最大内存,并指定超限后的策略:

maxmemory 256mb
maxmemory-policy allkeys-lru   # 内存满了淘汰最久没人用的键

常见策略:

  • noeviction:不淘汰,内存满写不进去(默认)
  • allkeys-lru:淘汰最久未用的键(个人站推荐)
  • volatile-lru:只淘汰设置了过期时间的键

八、在网站里用起来

以 PHP 为例(装了 phpredis 扩展):

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('My_Secure_Redis_Pass_2024');

$key = 'post_detail_' . $postId;
$html = $redis->get($key);
if ($html === false) {
    // 从数据库查 + 渲染页面
    $html = renderPost($postId);
    $redis->setex($key, 3600, $html); // 缓存 1 小时
}
echo $html;

这样同一篇文章 1 小时内不查数据库,直接返回内存缓存,速度立竿见影。

九、常见问题

Q1:redis-cli -a xxx 连接被拒绝?

检查 Redis 是否启动(systemctl status redis)、绑定地址是否是公网导致不通,以及密码是否正确。多数情况是密码打错或服务没起来。

Q2:重启后数据没了?

确认 appendonly 是否开启,及 save 落盘条件是否触发。数据写入后若立刻断电关机,最近几秒的 AOF 或未到点的快照可能丢,属正常现象;重要数据可用 BGSAVE/SAVE 手动触发快照。

Q3:要不要改端口?

端口 6379 是默认的,若把 Redis 暴露到公网,务必改高端口 + 强密码 + 防火墙放行,否则极易被扫描爆破。个人站建议只监听本机。

Q4:内存一直涨怎么办?

结合 maxmemory + 淘汰策略,并检查是否有死循环写入或没设过期时间的缓存键。用 redis-cli info memory、SCAN 查看大键。

十、配套建议

Redis 优化往往要和 MySQL、PHP-FPM 一起做,才能整体提速。配合本站的 MySQL 调优、PHP 性能优化教程,把缓存、数据库、进程三者都调到位,低配机器也能承接可观的访问量。

总结

Redis 装起来不难,关键是配好密码、绑定地址、持久化、淘汰策略这四件事再投产。装上之后,把热点数据缓到内存,网站响应速度会有质的飞跃。配合数据库、PHP 优化一起用,一台小 VPS 也能跑出流畅的体验。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

Nginx 反向代理配置详解:一台服务器搭多个网站、给应用加域名,反向代理全搞懂

SSH 安全加固完整教程:密钥登录、禁用密码、防爆破,让服务器再也攻不破

评 论
更换验证码