redis学习第四章
REDIS官方推荐的是Predis和phpredis。前者是完全使用php代码实现的原生客户端,后者是使用C语言编写的PHP扩展。两者功能上区别不大,但是性能上后者略胜一筹。
git地址:
https://github.com/nrk/predis
https://github.com/nicolasff/phpredis
Predis
predis对php的版本要求最低为5.3。
安装predis可以直接克隆其版本库(git clone git://github.com/nrk/predis.git),也可以直接从GitHub项目主页中下载代码的ZIP压缩包。
使用时首先需要引入autoload.php文件:
require ‘./predis/autoload.php’;
Predis使用了php5.3中的命名空间特性,并支持PSR-0标准。autoload.php文件通过定义PHP的自动加载函数实现了该标准。所以引入了autoload.php文件后就可以自动根据命名空间和类名来自动载入相应的文件。例如:
$redis = new Predis\Client();//会自动加载Predis目录下的Client.php文件。如果项目使用的PHP框架已经支持了这一标准那么就无须再次引入autoload.php了。
首先创建一个到redis的链接:
$redis = new Predis \Client();//该行代码会默认redis的地址为127.0.0.1,端口为6379,如果需要更改地址或端口:
$redis = new Predis \Client(array(
'scheme' => 'tcp',
'host' => '127.0.0.1',
''port' => 6379
));
我们使用get命令来测试:
echo $redis->get(‘foo’);
该行代码获取字符串类型键的值并输出,如果不存在则返回null。
当foo不是字符串类型则会报异常,可以用try catch 来处理异常。
3.1).MGET/MSET
Predis调用MSET命令时支持将php的关联数组直接作为参数,就像这样:
$userName = array(
‘user:1:name’ => ‘Tom’,
‘user:2:name’ => ‘Jack’
);
$redis->mset($userName);//相当于 $redis->mset(‘user:1:name’,‘Tom’,‘user:2:name’,‘Jack’);
同样MGET命令支持数组作为参数:
u s e r s = a r r a y k e y s ( users = array_keys( users=arraykeys(userName);
print_r( r e d i s − > m g e t ( redis->mget( redis−>mget(users));
打印结果为:
array(
[0] => ‘Tom’
[1] => ‘Jack’
)
3.2).HMSET/HMGET/HGETALL
Predis调用HMSET的方式和MSET的类似,如:
$user1 = array(
‘name’ => ‘Tom’,
‘age’ => ‘32’
);
$redis->hmset(‘user:1’,$user1);
最方便的是hgetall,Predis会把结果组装成关联数组返回。
3.3).LPUSH/SADD/ZADD
LPUSH和SADD的调用方式类似:
$items = array(‘a’,‘b’);
$redis->lpush(‘list’,$items)//相当于$redis->lpush(‘list’,‘a’,‘b’);
$redis->sadd(‘set’, i t e m s ) / / 相 当 于 items)//相当于 items)//相当于redis->sadd(‘set’,‘a’,‘b’);
而ZADD的调用方式为:
$itemScore = array(
‘Tom’ => ‘100’,
‘Jack’ => ‘89’
);
$redis->zadd(‘zset’,$itemScore);//相当于$redis->zadd(‘zset’,‘100’,‘Tom’,‘89’,‘Jack’);
3.4).SORT
在Predis中调用SORT命令的方式和其他命令不同,必需将SORT命令中除键名外的其他参数作为关联数组传入到函数中,如对SORT mylist BY weight_* LIMIT 0 10 GET value_* GET # ASC ALPHA STORE result
$redis->sort(‘mylist’,array(
‘by’ => ‘weight_’,
‘limit’ => array(0,10),
‘get’ => array('value_’,’#’),
‘sort’ => ‘asc’,
‘alpha’ => true,
‘store’ => ‘result’
));