predis如何实现phpredis的pconnect方法
predis和phpredis都是redis的php客户端,区别可以看这里,这里不赘述。
phpredis是php扩展,由C语言编写,诞生较早,很多PHPer都熟悉。
predis是用PHP语言编写,由于最近几年composer的盛行,以及很多框架的支持composer,存于composer库的predis也被大量应用。
pconnect()是phpredis里的方法,区别于connect(),详细了解可以看这篇,总结一下就是pconnect方法建立后的连接并不随这请求的结束而关闭,而是依赖于php-fpm进程,php-fpm进程不死,redis connect就一直存在,直到空闲超时自动断开。也就是建立了持久连接,适用于高并发下PHP请求Redis。
但是predis没有pconnect()方法,该如何实现类似的功能呢?
项目使用的是Laravel框架,但是在文档中并没有找到相关的配置参数。于是只能读插件源码,最后在/src/Connection/StreamConnection.php这个类中找个了实现连接redis的方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
在第19行的$parameters->persistent我们可以看到一个陌生的参数persistent,翻译为‘持久’。所以只要在使用predis连接redis的时候,加上参数persistent,并赋给一个true或1,就可以实现phpredis的pconnect(),简单方便。
下边是邮件佐证,说明没有错误理解源码:
Can the predis support the function pconnect() which in php-redis? Yes, just add in the connection parameters persistent=1 (when using URI strings) or persistent => true (when using a named array).- 1
- 2
这个坑是怎么踩到的呢?还是因为框架文档的原因,目前很多PHP框架都已经支持了composer,如Laravel,Yii,CI等,但是并不能保证文档及时更新,尤其是中文文档,所以还是要有阅读源码的能力。
其实从上边的代码中还可以看到很多内容:
来源:https://blog.csdn.net/u013474436/article/details/53131662
总结
以上是生活随笔为你收集整理的predis如何实现phpredis的pconnect方法的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 霍思燕老公(说一说霍思燕老公的简介)
- 下一篇: php连接redis的操作库predis