PHP下安装及使用Redis扩展(Windows环境)

redis作为一个key-value数据库在近年来非常火爆,尤其是在大数据和云计算发展迅速的今天。同样redis也成为了开发人员必学
必须使用的一个工具。同时redis在数据储存时支持持久储存和内存储存,既能够保证数据存取的快速性也能够保证数据的持久性。
key-value数据库发展的历史非常长,在很早之前memcached作为一个在生产环境中使用的key-value类型的数据库,经常被当做
缓存来使用。但是redis是对memcached所存在的不足的弥补。下边我来分享下redis在PHP中的安装及使用,也是因为最近的课程
促使了我写这样一个文档的想法。

一、Redis在windows系统中的安装

redis的官方安装包并不支持windows系统的使用。但是有团队已经开发了redis的windows适配的服务端和客户端,一般情况下我们是把redis服务器单独配置的,而且redis是支持网络的,所以最好还是安装在Linux系统的专门redis服务器,如果考虑到主从同步redis提供的方法也很容易实现。

redis在windows下的安装包的下载地址如下。

https://github.com/ServiceStack/redis-windows/tree/master/downloads

建议大家下载相对应的版本,下载下来xxxxx.zip后需要解压使用。我下载的是redis-latest.zip也就是redis3.0.5版本,对于版本的下载不要下载太新的版本,以免没有对应的dll扩展。

下载后目录的结构如下:

在这些文件中只要注意redis-server.exe是redis在windows系统的服务端,如果要使用redis这个脚本必须点击运行而且不能关闭。如果出现以下的界面就表示运行正常了。默认情况host是127.0.0.1端口是6379,当然这个可以自己来修改。

如果要在客户端测试redis服务是否正常运行了可以打开刚刚解压的包中的redis-cli来测试

可以输入以下内容来测试redis的运行效果。

SET username "weiyongqiang"
GET username

如果正常的输出"weiyongqiang"就说明redis服务启动成功了,下边就是在PHP中安装redis扩展了。

二、在PHP中安装redis扩展

在PHP中安装扩展模块一般是添加dll文件来实现的。那我们首先要找到redis的dll扩展。

在该地址下载php_redis.dll:http://windows.php.net/downloads/pecl/snaps/redis/

在下载之前需要看一下你所使用的PHP的这些信息,要和你要下载的扩展对应起来。

我的PHP版本是5.5.30而且我的PHP是nts(非线程安全的),是VC11,x86的所以我下载的扩展为

下载解压后需要将其中的php_redis.dll放置在PHP的ext目录下。如果不知道怎么样找ext目录可以再PHPinfo的输出中看loaded configurationfile所在的目录在其中就可以看到ext

复制到ext后还需要打开php.ini来修改其中的扩展选项。php.ini的位置就是我上边所截图的位置,打开php.ini后在任意位置添加

extension=php_redis.dll

然后重启服务器软件,如果使用的apache就使用apache重启的方法,如果是nginx就使用nginx重启的方法。

重启后再输出下phpinfo()在其中查找是否有redis扩展的信息

只有出现该选项才表示扩展安装成功。

三、在PHP中使用redis存取数据

3.1简单数据类型的读写

public function index(){
    $redisObj = new \Redis();
    $redisObj->connect('127.0.0.1',6379);
    $redisObj->set('name', '魏永强');
    $name = $redisObj->get('name');
    dump($name);
}

如果输出为

string(9) "魏永强"

就表示安装成功了。注意:我的测试中使用了thinkphp框架,如果不使用框架要在输出的位置把dump()替换成print_r($name)来输出或者直接用echo也是可以的。

3.2哈希类型的读写

在redis中如果要读写数组等hash类型的数据就不能简单的使用set和get了。redis的API中为我们提供了hash类型数据的读写方法如下:

public function index(){
    $redisObj = new \Redis();
    $redisObj->connect('127.0.0.1',6379);
    $redisObj->hMset('userinfo', array('name'=>'魏永强','age'=>22));
    $info = $redisObj->hGetAll('userinfo');
    dump($info);
}

对于hash类型的操作方法分别是

public function hMset( $key, $hashKeys )

读取是方法为

public function hGetAll( $key )

还有更多的关于PHP操作redis的方法请查看官方提供的手册。当然如果使用框架我们也可以使用框架为我们封装好的redis的使用类来操作。比如ThinkPHP框架为我们已经封装好了redis驱动,这样无论我们存取的数据类型是何种类型,在写入时我们只要使用$obj->set(key,value);读取时使用$obj->get(key);来读取显得非常方便。

你可能感兴趣的:(PHP,redis)