更新博客需要轻量缓存,直接锁定 Aiven.io 托管 Valkey——1GB 基础空间足够用,节点分布广、高可用,关键是它本身就是 Redis 的分支,协议完全兼容,自动备份、扩容这些特性省了不少运维麻烦,堪称“开箱即用”的典范。
不过 Aiven 官方推荐的 PHP 客户端是 Predis(纯 PHP 实现),网上有评测过Predis 比 phpRedis(基于 Redis.so 扩展)慢了近 30%。毕竟 phpRedis 是 C 扩展实现,执行效率远高于纯 PHP 编写的 Predis,对于追求响应速度的博客来说,果断决定换成 phpRedis,没想到这一换就踩了坑。
Aiven Valkey 核心配置(必看)
先明确下 Aiven Valkey 的关键配置,避免踩基础坑:
- 1GB 基础存储空间,满足中小型项目缓存需求;
- 非 Redis 默认 6379 端口,需从控制台获取专属端口;
- 强制 TLS/SSL 加密传输(默认开启);
- 用户名+密码双认证(兼容 Redis 6+ ACL 机制);
- 仅白名单 IP 可访问,需提前添加服务器公网 IP。
按 TLS 配置连接,直接报错
从 Aiven 控制台拿到主机名、专属端口、默认用户名 default 和密码后,按 phpRedis 常规逻辑写了带 TLS 配置的代码(毕竟 Aiven 强制加密):
<?php
$redis = new Redis();
$host = "xxx-valkey-xxx.aivencloud.com";
$port = 12345;
$username = "default";
$password = "your-aiven-valkey-password";
try {
$connected = $redis->connect(
$host, $port, 10, null, 0, 10,
['stream' => 'tls', 'verify_peer' => true, 'verify_peer_name' => true]
);
$redis->auth([$username, $password]);
$redis->set("test_key", "hello");
echo $redis->get("test_key");
} catch (Exception $e) {
die("连接失败:" . $e->getMessage());
}运行后直接报错:SSL certificate problem: unable to get local issuer certificate(证书验证失败),偶尔还会出现 TLS 握手失败。查了下原因,phpRedis 用 TLS 连接需要 Aiven 的 CA 证书验证身份,但我翻遍了 Aiven 控制台所有标签页,都没找到证书下载入口;用官方 avn 工具尝试获取,也提示“无可用证书”,试了系统根证书也没用,折腾了快1小时没头绪。
柳暗花明:禁用 SSL 搞定
既然证书找不到,不如试试关闭 TLS 加密?抱着试试看的心态操作了下,步骤超简单:
- 登录 Aiven 控制台,进入 Valkey 实例;
- 点击「Service Settings」→「Advanced configuration」→「Configure」;
- 搜索「valkey_ssl」,把「Enabled」改成「Disabled」;
- 保存后等 1-2 分钟,实例重启生效(避开业务高峰)。
修改代码,一次连接成功
禁用 SSL 后,删掉 TLS 相关配置,代码简化如下:
<?php
$redis = new Redis();
$host = "xxx-valkey-xxx.aivencloud.com";
$port = 12345;
$username = "default";
$password = "your-aiven-valkey-password";
try {
$connected = $redis->connect($host, $port, 10);
$redis->auth([$username, $password]);
$redis->set("test_key", "hello_valkey");
echo "连接成功!测试值:" . $redis->get("test_key");
} catch (Exception $e) {
die("连接异常:" . $e->getMessage());
}运行后直接输出成功提示,缓存读写速度和本地 Redis 几乎无差别,比之前的 Predis 快了不少,问题彻底解决!
注意事项
- 禁用 SSL 后数据传输不加密,仅推荐测试/内网场景;生产环境需联系 Aiven 技术支持获取 CA 证书,或用 VPC 对等连接保障安全;
- 需确保 phpRedis 版本 ≥5.3.0(支持 Redis 6+ 认证),服务器 IP 已添加到 Aiven 白名单,防火墙允许对应端口出站。
暂无评论