问:redis和php都安装好了,怎么redis还没法用啊?
答:因为你缺乏redis和php之间的沟通桥梁啊。这个桥梁就是redis扩展,需要用php加载这个扩展的,加载上去就好能用了。
问:那怎么添加上扩展呢?
答:添加扩展其实在php里面是很常见的操作,就是把动态库下载下来,放到对应的位置,然后在php.ini这个配置文件中开启就行了。
问:windows和linux中安装redis扩展一样么?
答:步骤是一样的,但是有点区别。这里假设你已经安装好php环境和redis服务器了。
先来说一下linux是怎么安装redis扩展的。
另外我本机的环境是centos x86_64 php版本5.6 nts版本,这里千万别和windows环境混了,只有windows下的php才有vc的版本
第一步:下载扩展包。wget https://codeload.github.com/phpredis/phpredis/zip/develop
解压:unzip develop.zip
进入到 phpredis-develop 目录
第二步:使用 phpize 生成 .configure文件。/usr/local/php7/bin/phpize
若缺少auotoconf文具安装它即可
yum install -y autoconf(简单方便,如果不缺少,这一步就不用了)。
再次执行/usr/local/php5.6/bin/phpize(这个路径根据自己的来,如果多个php 版本,一定要注意使用版本问题)
第三步:编译安装
./configure --with-php-config=/usr/local/php5.6/bin/php-config
make && make install
此时不出意外就会安装成功了。返回给你一个安装目录 。这里面就会有一个redis.so的扩展文件。
第四步:在php配置文件中添加上redis扩展。
extension=redis.so(是在真实加载的php.ini文件中,你可能有多个这样的文件,注意查看php真实加载是哪个)
第五步:没大问题的话,写个echo phpinfo();就能看到关于redis的信息了。
下面再来说一下windows下如何添加redis扩展。
同样我本机的环境是win7旗舰版 php是5.6版本 TS,VC11。一定要注意好对应版本。 他不像linux那样需要自己编译,windows这个下载的是成品,版本不对,是没法用的
第一步:下载redis扩展库。下载地址
http://91code.site/download/php_redis-2.2.7-5.6-ts-vc11-x86.zip
解压会得到两个文件一个是php_redis.dll,另一个是php_redis.pdb
网上还有说要下载php_igbinary扩展库的,查了一下说igbinary在序列化和反序列化的效率要比Php自带的高,redis依赖他,而且要放到redis动态库前面,否则不生效。但是。。我没有安装这个库,用redis感觉无碍,可能到用到序列化的时候才能高下立判吧,如果你在意,下载下来安装上即可。要放到php的ext目录下!
第二步:修改php.ini文件
extension=php_igbinary.dll(如果有的话)
extension=php_redis.dll
第三步:重启apache,写个echo phpinfo();就能查看redis的信息了
至此redis扩展安装完毕,小伙伴们可以愉快地通过php使用redis了。
问:php怎么使用redis,能给举个栗子么?
答:基本操作就三个。连+写+读
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server successfully";
//查看服务是否运行
echo "Server is running: " . $redis->ping();
//设置 redis 字符串数据
$redis->set("tutorial-name", "Redis tutorial");
// 获取存储的数据并输出
echo "Stored string in redis:: " . $redis->get("tutorial-name");
//存储数据到列表中
$redis->lpush("tutorial-list", "Redis");
$redis->lpush("tutorial-list", "Mongodb");
$redis->lpush("tutorial-list", "Mysql");
// 获取存储的数据并输出
$arList = $redis->lrange("tutorial-list", 0 ,5);
echo "Stored string in redis";
print_r($arList);
// 获取数据并输出
$arList = $redis->keys("*");
echo "Stored keys in redis:: ";
print_r($arList);