PHP 如何连接 Redis

在开发网站或应用时,经常需要快速存取临时数据,比如用户的会话信息、商品的临时缓存这类数据。如果直接存在数据库里,不仅查询慢,还会增加数据库的负担,这时候 Redis 就成了常用的“临时数据仓库”。而 PHP 作为常用的后端开发语言,和 Redis 的连接就是很基础也很重要的一步——就像给 PHP 程序和 Redis 仓库之间搭一座运输货物的小桥,没有这座桥,两边的东西就送不过去。

先准备好“搭桥的材料”

要让 PHP 能连到 Redis,首先得有两个基础东西:运行环境里要有 Redis 服务,还要有 PHP 能和 Redis 对话的扩展。

PHP 如何连接 Redis

比如你用的是本地开发环境,像 XAMPP 或者 WAMP,可能默认没装 Redis 扩展。这时候得先装 Redis 服务——就像先把仓库建好,再准备运输的工具。装完 Redis 服务后,再给 PHP 装 Redis 扩展,就好比给 PHP 程序配个“会说 Redis 语言”的翻译器。如果是服务器上的话,用命令行就能装,比如 CentOS 系统可以用 yum 装 Redis,再用 pecl 装 PHP 的 Redis 扩展。装好后,记得在 PHP 的配置文件里把扩展打开,不然 PHP 还是听不懂 Redis 的话。

第一步:搭好最基础的桥——简单连接

准备好材料后,就可以开始写代码搭连接了。最基础的连接代码非常简单,就像给桥铺第一层木板。

举个生活化的例子,假设你在开一家小便利店,仓库(Redis)就在店里,老板(PHP程序)要去仓库拿东西,直接说地址就行:

`php

// 新建一个Redis对象,相当于找个运输工具

$redis = new Redis();

// 连接到本地的Redis服务,默认端口是6379,就像仓库的门牌号

$redis->connect('127.0.0.1', 6379);

`

这段代码运行后,PHP 和 Redis 就连上了,就像桥的基础框架搭好了。但实际中很多 Redis 服务不是在本地,可能是远程服务器,这时候把 127.0.0.1 换成远程服务器的 IP 就行。如果 Redis 设了密码,还得加一句 $redis->auth('你的Redis密码');,就像给仓库门加了密码,只有输对才能开门。

第二步:测试桥能不能用——存点东西试试

桥搭好后,得试试能不能正常运输货物,也就是往 Redis 里存点数据,再取出来。比如你是做电商网站的,想把热门商品的名称临时存在 Redis 里,不用每次都去数据库查。

还是用便利店的例子,老板把热门零食的名字记在仓库的小黑板上,就是:

`php

// 存数据:把“热门零食”这个标签和商品名“草莓棒棒糖”对应起来

$redis->set('hot_snack', '草莓棒棒糖');

// 取数据:从仓库小黑板上找“hot_snack”对应的内容

$snack = $redis->get('hot_snack');

// 输出结果,应该会显示“草莓棒棒糖”

echo $snack;

`

这就像你把货物(数据)送到仓库,再取回来,说明桥是通的。如果这一步没成功,可能是 Redis 服务没开,或者端口被防火墙挡住了,就像桥被洪水冲断了,得先检查这些小问题。

第三步:处理小问题——桥的小调整

实际用的时候,可能会遇到一些小麻烦,比如连接超时,或者想让数据过段时间自动过期。比如你存的热门商品,过了一周就不热门了,没必要一直存在仓库里。这时候可以在存数据的时候加个有效期:

`php

// 存数据,有效期是3600秒,也就是1小时,1小时后数据自动消失

$redis->setex('hot_snack', 3600, '草莓棒棒糖');

`

另外,有时候网络不好,连接容易断,还可以给连接加个超时时间,就像老板去仓库最多等5分钟,超过时间就回来:

`php

// 连接Redis,超时时间设为5秒

$redis->connect('127.0.0.1', 6379, 5);

`

这些小调整都是为了让这座桥更耐用,不会因为一点小问题就坏掉。

最后要注意,连接用完后,最好把桥拆掉,也就是关闭连接,不然会占资源。代码里可以加一句 $redis->close();,就像送完货把桥收起来,留着下次用。如果是长期用的连接,也可以不用每次都关,但要根据实际情况调整,别让资源浪费。

上一篇 Java wait 和 sleep 区别