【Memurai】 Redis 缓存,引入 predis/predis 纯 PHP 库

一句话回答你 :

你可以只操作 composer require predis/predis,但前提是你的电脑上已经有一个在运行的 Redis 服务 。

如果没有,那 Predis 这个 PHP 库连谁去?它就是个客户端,必须有个 Redis 服务器端才能工作。

打个比方:

  • Redis 服务 = 银行金库(存钱的地方)

  • predis/predis = 你的银行卡(让 PHP 能存取钱的工具)

  • Composer 引入 predis = 在 PHP 里办了一张银行卡

你现在只办了卡,但金库还没盖,钱没地方存。所以 Redis 服务是必须单独安装的,这和 PHP 扩展无关,是两个不同的东西。

回答你原来的疑问:

"使用 Composer 引入 predis/predis 纯 PHP 库,无需安装扩展"

这个说法完全正确,但它指的是不需要给 PHP 装一个 C 写的 redis 扩展 (php_redis.dll)。

它没说的是,Redis 服务器本身还是要有,就像你用 PDO 不需要装 mysql 扩展,但 MySQL 服务必须安装和运行一样。

所以,别被字面绕进去。装个 Redis 服务 + composer 引入 predis,万事大吉。

第一步:让 Redis 服务跑起来(二选一,比之前更简单)
  1. 最简单的方法:下载 Memurai(合法的 Windows Redis 替代品)

    • 直接去 Download Memurai for Windows | Memurai 下载开发者版。

    • 像安装普通软件一样下一步,默认端口 6379,什么配置都不用改。

    • 装完它就在后台运行了,开机自动启动。

Download Memurai for Windows | Memurai

Download Memurai for Windows | Memurai

1. 先确认 Memurai 的服务正在运行

打开命令提示符,输入:

cmd

复制

下载

复制代码
netstat -ano | findstr :6379

如果看到一行 TCP 127.0.0.1:6379 LISTENING,说明 Redis 服务已启动,端口正在监听,这是最重要的。

如果没有任何输出,说明服务没跑起来,需要去"服务"管理器启动 Memurai 服务,或重启电脑。

4. 终极验证(跳过命令行工具)

你其实不需要 cmd 里的 redis-cli 也能确认服务正常。直接用 PHP predis 测试即可,这比什么都准。

创建一个 PHP 文件(比如 test.php),写入:

复制代码
<?php
require 'vendor/autoload.php';

try {
    $redis = new Predis\Client([
        'scheme' => 'tcp',
        'host'   => '127.0.0.1',
        'port'   => 6379,
    ]);
    $redis->set('hello', 'work');
    echo $redis->get('hello'); // 应该输出 work
} catch (Exception $e) {
    echo '连接失败: ' . $e->getMessage();
}

现在总结一下你目前的状态:

  • ✅ Redis 服务 (Memurai)在 127.0.0.1:6379 正常运行

  • ✅ predis 客户端通过 Composer 正确安装

  • ✅ PHP 可以成功连接 Redis 并进行读写

2. 学习更多 Redis 命令(通过 predis 方法)

目的 predis 方法示例
设置带过期时间的缓存 $redis->setex('key', 3600, 'value')
删除缓存 $redis->del('key')
检查 key 是否存在 $redis->exists('key')
递增/递减 $redis->incr('counter') / decr()
Hash 操作 $redis->hset('user:1001', 'name', 'Tom')

你现在的缓存系统已经"活"了,可以自由地读写 Redis。需要我帮你设计具体的缓存场景(比如缓存全站配置、Session 共享、排行榜)随时说,我会帮你写出对应的代码。

第二步:在你的 PHP 项目里
复制代码
composer require predis/predis

然后写代码:

复制代码
<?php
require 'vendor/autoload.php';

$redis = new Predis\Client([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
]);
$redis->set('test', 'hello redis');
echo $redis->get('test');

这样就能正常用了。

2. 用记事本编辑配置文件

右键单击 memurai.conf,选择 "用记事本打开" (或"打开方式" -> "记事本")。

搜索关键词 requirepass,你会看到这一行(默认被注释):

复制代码
# requirepass foobared

把前面的 # 去掉,把 foobared 换成你自己的密码,例如:

复制代码
requirepass MyStr0ngP@ssword

保存文件并关闭。

3. 重启 Memurai 服务

打开 Windows 服务管理器:Win + R -> 输入 services.msc -> 回车。

在列表中找到 Memurai 服务,右键选择 "重新启动"。

方法一:以管理员身份运行记事本(推荐,最简单)

  1. 按 Win 键,输入 记事本(或 Notepad)。

  2. 在搜索结果上右键 ,选择 "以管理员身份运行"。

  3. 在记事本里点 文件 → 打开,路径输入:

    复制代码
    C:\Program Files\Memurai\memurai.conf

    点"打开",现在就可以编辑并保存了。

    'tcp', 'host' => '127.0.0.1', 'port' => 6379, 'password' => $redisPassword, // 密码认证 ]); // 测试写入和读取 $redis->set('hello', 'Redis 带密码也正常工作了!'); echo $redis->get('hello') . PHP_EOL; } catch (Exception $e) { echo '连接或操作失败: ' . $e->getMessage() . PHP_EOL; }

提供的 config/redis.php 是一个 PHP 配置文件

如果你是在原生 PHP 中使用 Predis(非框架)

对应的 Predis 客户端初始化代码则是:

复制代码
return [
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'password' => '1234569aaa',   // 在这里写上密码
    'database' => 0,
    'timeout'  => 2.5,
];

前提条件(再提醒一下)

这个密码必须与你在 memurai.conf 中 requirepass 设置的完全一致,且修改配置后已重启 Memurai 服务。否则连接会认证失败。

在 Redis 里,database 指的是逻辑数据库的编号,不是 MySQL 那种数据库。

Redis 默认有 16 个逻辑数据库 ,编号从 0 到 15。

配置中的 'database' => 0 表示连接后默认使用 0 号数据库。


你可以把它理解为"不同的命名空间"

  • 不同编号的数据库之间数据完全隔离。

  • 比如,0 号库存放业务缓存,1 号库存放 Session 数据,互不影响。

  • 切换数据库用 SELECT 1 命令,Predis 里也可以调用 $redis->select(1)。


一般情况下,保持 0 即可

除非你有明确的隔离需求(比如多个应用共用一个 Redis 实例),否则不用改它,默认 0 号库完全够用。

注意 :Redis Cluster 模式不支持多个数据库,只能使用 0 号库。

这个不能替代 Redis 服务。

Redis for VS Code 是一个 VS Code 的图形化管理插件 ,它只是让你在编辑器里查看和操作 Redis 数据的工具。

打个比方:它相当于数据库的管理客户端(如 Navicat),而不是数据库服务器本身。

你必须先有一个正在运行的 Redis 服务(如 Memurai、Docker Redis 或 Windows 版 Redis),然后这个 VS Code 插件才能去连接它。

相关推荐
ITxiaobing20238 小时前
海外广告投放的 IP 定位服务怎么选?一份基于实测数据的选型参考
网络协议·tcp/ip·php
weixin_417396838 小时前
桌面云终端PXE启动失败怎么排查?从DHCP Option到镜像下发
开发语言·前端·php·技术·酒店·综合布线·弱电
ServBay9 小时前
PHP 突爆 9.2 分高危漏洞,你升级了吗?
后端·php
综合简报10 小时前
黑五海外发稿投给谁?三类海外媒体发稿渠道的分工
开发语言·php·媒体
子兮曰11 小时前
PHP漏洞危机,你的网站升级了吗?
前端·后端·php
Behavior12 小时前
影响约 70% 网站:OpenAI 牵头协调全球发现/修复 PHP 高危漏洞
php·openai·ai编程
fengci.12 小时前
BUUCTF(困难部分)
android·开发语言·前端·学习·php
苏琢玉13 小时前
PHP 这次是真的火了,只不过火得有点吓人
php
小白跃升坊15 小时前
PHP2Shell:AI 两天挖出 9.2 分漏洞,让全球 70% 网站连夜打补丁
php·1panel·ai安全·漏洞披露
骑着蜗牛撵大象32715 小时前
字节序、TLV 到 netlink:Linux 网络消息的编解码全链路
linux·网络·php·etl·序列化·字节序·tlv