您的 Redis 服务器上安装什么?
- 来自 Redis 官方软件源的 Redis Open Source,安装时取最新版本
- 通过 requirepass 设置的必填密码,安装时自动生成
- 已开启 AOF 持久化(appendonly yes)
- 在 6379 端口接受远程连接
- Redis 文档推荐的 vm.overcommit_memory = 1 设置
- 防火墙只开放 22 和 6379 端口,并为 SSH 配有 fail2ban
Redis 需要多大的配置?
Redis 把全部数据保存在 RAM 中,所以数据量决定服务器的大小。管理文档没有给出固定数值,但提醒说,写入频繁的实例在保存 RDB 文件或重写 AOF 时,内存最多可能达到平时的两倍。经验上,1 GB 适合小型缓存或会话存储,数据更大时请选择约为数据量两倍的 RAM。如果不够,请在面板中升级配置,您的数据和 IP 地址保持不变。
| 用途 | 配置 | 价格 | 选择 |
|---|---|---|---|
| 入门 | 1 GB RAM · 1 vCore · 25 GB NVMe | $2.58/月 | |
| 中等 | 2 GB RAM · 1 vCore · 40 GB NVMe | $4.01/月 | |
| 强劲 | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/月 |
适合谁?
- 需要共享缓存或会话存储的多台应用服务器
- 想把队列迁到一个单独的 Redis 服务器上的 Laravel、Django、Rails 或 Node.js 项目
- 使用发布/订阅、计数器或排行榜等内存数据结构的应用
- 想要一个远程 Redis 用于开发和测试的开发者
下单之后会发生什么?
- 设定配置并完成付款。
- 服务器启动后,Redis 会自行安装。请在“概览”标签页等待“应用”一行显示 Redis 已就绪。
- 复制“连接地址”和“密码”两行。没有“登录名”一行,因为密码属于 Redis 的默认用户。
- 测试一下连接是否正常:redis-cli -h IP -a PASSWORD ping
- 把连接字符串交给您的应用:redis://:PASSWORD@IP:6379/0
- 如果把它用作缓存,请设置 maxmemory-policy allkeys-lru,然后把 6379 端口限制为只允许您自己的地址访问。
每台服务器都包含
- 价格含每日备份
- 不限流量
- 完整 root 权限
- 之后可升级或降配 RAM 和 CPU,并扩大磁盘
- 位置:Istanbul · IST-1。
须知
- 6379 端口对互联网开放且没有 TLS,所以密码和数据以明文传输。请加以限制:先运行 ufw delete allow 6379/tcp,再运行 ufw allow from YOUR_IP to any port 6379。
- 安装时 maxmemory 被设为约四分之三的 RAM。达到上限后,Redis 会拒绝新的写入。如果您调整了服务器配置,请在 /etc/redis/redis.conf 中相应调高该值。
- Redis 8 及更高版本以 RSALv2、SSPLv1 或 AGPLv3 发布。如果您打算把 Redis 作为服务提供给他人,请先阅读相关条款。
- Redis 来自它自己的软件源,不会自动更新。新版本需要您通过 apt 安装。
Redis 常见问题
如何连接我的 Redis 服务器?
您的连接字符串是 redis://:PASSWORD@IP:6379/0。在命令行中运行 redis-cli -h IP -a PASSWORD。不带密码的连接会收到 NOAUTH 错误,所以每条远程命令都必须先通过认证。
Redis 需要多少 RAM?
Redis 需要多少 RAM 取决于您的数据量,没有固定的官方数值。经验上,小型缓存或会话存储从 1 GB 起步。写入频繁的实例在保存时内存可能翻倍,所以请选择约为数据量两倍的 RAM。
Redis 重启后会丢失数据吗?
不会。本次安装开启了 AOF 持久化,每次写入都会追加到磁盘,重启后数据会从该文件恢复。默认的 fsync 策略是每秒一次,这意味着遇到意外中断时,最多会丢失最后一秒的写入。
Redis 内存用完时会怎样?
本次安装把 maxmemory 设为约四分之三的 RAM,达到上限时 Redis 会拒绝新的写入。如果用作缓存,请在 /etc/redis/redis.conf 中加入 maxmemory-policy allkeys-lru,并运行 systemctl restart redis-server。之后到达上限时,Redis 会自动淘汰旧的键。
我的 Redis 连接是加密的吗?
安装后的 Redis 连接没有 TLS,所以密码和数据以明文传输。请把访问限制为您自己的 IP 地址,或者用 ssh -L 6379:127.0.0.1:6379 root@IP 建立 SSH 隧道。同一台服务器上的应用连接 127.0.0.1,流量不会离开这台机器。
可以为我的应用单独创建一个 Redis 用户吗?
可以,通过 Redis ACL。例如:ACL SETUSER uygulama on >STRONG_PASSWORD allkeys +@all -@dangerous。然后用 CONFIG REWRITE 把它保存到配置文件中。连接字符串就变成 redis://uygulama:STRONG_PASSWORD@IP:6379/0。