ausheng

Mac下安装redis环境(mamp, php)

前言

  • 初学redis,在mac下安装过程遇到一些坑,尤其是下文第四点,在mamp下安装phpredis扩展过程中,记录之。
  • 本文最终实现的是用tp5框架操作redis,但这之前的几步,应该是较通用的,即不用tp5,甚至不用php,也可参考前几步。



安装redis环境,究竟需要安装什么

因为对redis不了解,我把redis想像成mysql去入门了,mysql有以下内容:

  1. mysql-server:mysql必不能少的东西。
  2. mysql-client:即在命令行输入mysql ,进入到操作mysql-server的界面。
  3. mysql图形界面管理工具:如navicat。
  4. php-mysql相关模块:必须下载,放置,引入这些模块,才能通过php操作mysql。
  5. php框架会有其自己的php-mysql类库:那是框架对php操作mysql的封装。

同理,redis也有如上内容,安装redis环境,我认为把以上内容安装好,应该就能使用和管理redis。

一、安装redis-server

## 安装
brew install redis
## 管理
brew services start|stop redis
## 测试安装结果
redis-cli

集成安装 ,即安装mamp,里面有apache,nginx,mysql,redis各种服务。

想安装**版的去 爱情守望者 搜。

有一点要注意的是:要勾选Allow network access to Redis,否则连不上去。如图

二、安装redis-client

这个貌似不用专门安装,单独安装redis成功就有了。进入redis命令行界面:

redis-cli

三、安装redis图形界面管理工具

笔者安装的是Medis,也是在爱情守望者里下载的。目前用起来没问题。

四、安装php-redis相关模块

这里坑最多!

注意到这里说的是在mamp下安装php-redis相关模块,不是单独搭环境了。

先说流程,再说坑。

流程

  1. 下载phpredis包。
  2. 用某个版本的phpize编译,得到redis.so模块
  3. 将redis.so模块放到php.ini指定的目录下
  4. 在php.ini引入redis.so模块
  5. 通过phpinfo()搜索redis,查看是否安装成功

我遇到的坑

首先,笔者搜了很多文章,都是上来就说这个流程,也许是mamp版本不同,但我看了php.ini,到其指定的引入目录,发现已经有redis.so模块了。

  • 打开期望版本的php.ini

ctrl+f搜索extension_dir,到其指定引入模块目录,发现有redis.so,那意味着流程的前3步都不用干了。

然后到第四步,当时没看懂MAMP_Redis_MAMP是什么意思,一直纠缠在引入语句是否正确上,消耗了很多时间,最后发现是模块有问题,于是重新走流程。

正确的具体步骤

  1. phpredis的github仓库下载包。
  2. 使用mamp的指定版本的php编译该包
## 进入刚下载的包目录下
cd 你的下载目录/phpredis
## 用mamp指定版本的php的phpize编译
/Applications/MAMP/bin/php/php7.0.31/bin/phpize

## 返回如下,说明成功
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012

## 继续输入
./configure --with-php-config=/Applications/MAMP/bin/php/php7.0.31/bin/php-config
## 继续
make

## 成功后,进入modules,有redis.so
cd modules
ls

注意,本文所有涉及php版本的操作,笔者统一使用的是mamp下的php7.0.31版本。



  1. 将redis.so模块放到php.ini指定的目录下。上面说过了,笔者的是extension_dir = "/Applications/MAMP/bin/php/php7.0.31/lib/php/extensions/no-debug-non-zts-20151012/"
  2. 在php.ini引入redis.so模块。在php.ini添加extension=redis.so即可。但上面说过,extension=redis.so前有MAMP_Redis_MAMP。我的理解是,这是一个常量,是用来控制开关的,而在哪里设置呢?如图。这个大家通过debug模块试一试就知道了。
    最终,把MAMP_Redis_MAMP删掉,留下extension=redis.so即可。
  1. 最后,打开phpinfo,搜索redis,找到,就恭喜。

小结

  1. mamp下修改保存后,要点一下servers关闭,再点开启。
  2. 也许是报错模式设置问题,指定目录没有模块或模块有问题,而php.ini引入了该模块,仍能正常开启服务,但在phpinfo里看不到该模块
  3. 这里说的php版本有点乱,至少保证,以下版本是用的同一个,且建议都是用mamp下的php,而不是单独下载的。
    1. 最终执行php文件的php版本
    2. 修改的php.ini的版本
    3. 用来编译phpredis包的php版本

五、安装框架的php-redis类库

不具体说了,如果是tp5,自带了,不用任何安装指令。

其它框架,看其手册,大概就是通过composer操作一下。

ausheng

爱生活,爱编程

AUSHENG – BLOG

不要害羞,保持联系。我们喜欢结识有趣的人,结交新朋友。