Redis官方推荐的PHP客户端是Predis和phpredis2
实现的方式不同
- phpredis是用c语言实现的php扩展
- predis是一个纯PHP实现
php支持的版本不同
- predis只支持php5.3以上版本、
- phpredis不存在版本问题
性能的比较
环境:本地环境
predis | phpredis |
---|---|
18900 SET / sec,使用12个字节作为键和值 | 29000 SET / sec,使用12个字节作为键和值 |
21000 GET / sec,同时检索非常相同的值 | 30000 GET / sec,同时检索非常相同的值 |
0.210秒,使用_KEYS * _提取30000个密钥 | 0.037秒,使用_KEYS * _提取30000个密钥 |
备注: 虽然Predis的性能逊于phpredis,但是除非执行大量Redis命令,否则很难区分二者的性能。而且实际应用中执行Re dis命令的开销更多在网络传输上,单纯注重客户端的性能意义不 大。读者在开发时可以根据自己的项目需要来权衡使用哪个客户端。
Predis是一个纯PHP实现:不够快!
这确实取决于实际情况,但是大多数时候答案是:是的,它足够快。我会给你一个
几个简单的数字以及一个使用单个客户端的简单测试,并由PHP 5.5.6执行
针对在Intel Q6600的Ubuntu 13.10下运行的Redis 2.8本地实例:
21000 SET / sec,使用12个字节的键和值。
21000 GET / sec,同时检索非常相同的值。
0.130秒,使用_KEYS * _提取30000个密钥。
它与不错的C扩展[phpredis](http://github.com/nicolasff/phpredis)相比如何?
为Redis提供有效的客户?
30100 SET / sec,使用12个字节作为键和值
29400 GET / sec,同时检索非常相同的值
0.035秒,使用“ KEYS *”“提取30000个密钥。
phpredis 似乎快得多!好吧,我们正在将C扩展名与纯PHP库进行比较,因此
较低的数字是可以预期的,但是它们有一个根本的缺陷:这真的是您的情况吗
要在您的应用程序中使用Redis?您真的要使用以下命令发送数千个命令吗?
使用单个客户端实例在每个页面请求上进行for循环?如果是这样,那么我想你可能是
做错了事。另外,如果您需要“设置”或“获取”多个键,则应该使用
MSET和MGET之类的命令。您还可以使用流水线来获得更多性能
可以使用技术。
还有一件事:我们通过连接本地主机实例测试了Predis的开销
的Redis,但是当我们通过连接到远程Redis进入物理网络时,这些数字如何变化
实例?
使用Predis:
3200 SET / sec,密钥和值均使用12个字节
3200 GET /秒,同时检索非常相同的值
0.132秒,使用“ KEYS *”提取30000个密钥。
使用phpredis:
3500 SET / sec,使用12个字节的键和值
3500 GET /秒,同时检索非常相同的值
0.045秒以使用“ KEYS *”提取30000个密钥。
到那里,您得到的平均数几乎相同,原因很简单:网络延迟是
真正的性能杀手,您几乎无法做任何事情。作为免责声明,请记住
我们正在衡量客户端库实施的开销以及网络的影响
往返时间,因此我们并没有真正衡量Redis的速度。 Redis最耀眼
客户并发请求!另外,实际表现应根据
您的应用程序将使用Redis。
客户端安装地址
- predis
- phpredis
参考
- predis的FAQ.md
- redis入门指南-第五章
网友评论