1.应用场景
主要用于学习php redis扩展库,phpredis的使用,如何在项目中应用。 |
2.学习/操作
1.文档阅读
2.整理输出介绍
安装扩展或者通过编译安装
插入:centOS7中安装 php redis扩展 2.1 单实例Redis使用code example
更多详情参见 GitHub - phpredis/phpredis: A PHP extension for Redis 2.2 多实例机群RedisCluster使用code example
详情使用参见: phpredis/cluster.markdown at develop · phpredis/phpredis · GitHub 后续补充 ... |
3.问题/补充
1. phpredis的通信过程,通信协议?
通信过程大致如下:
在这个通信过程中, 2. Redis是单reactor单线程模型
不准确。Redis是一个使用事件驱动的单线程模型,但它可以使用多个反应器(reactor)实例来处理并发请求。每个反应器负责处理一部分客户端连接和请求。虽然Redis本身在处理命令时是单线程的,但通过使用I/O多路复用技术和非阻塞I/O操作,它能够高效地处理并发请求。 Redis的单线程模型使得它能够避免多线程操作的复杂性和线程安全问题,并且通过使用事件循环和非阻塞操作,可以实现高性能和低延迟的数据访问。然而,需要注意的是,Redis的单线程模型适用于大多数情况下的高并发读写操作,但在某些特定场景下,如大规模写入操作或复杂计算密集型任务,可能会有性能限制。 总结一下,Redis采用的是单线程的事件驱动模型,通过利用事件循环和非阻塞I/O操作来处理并发请求,从而提供高性能的数据存储和访问能力。 3. 如果没有看到连接关闭的相关代码,是使用默认的短链接,以及默认的超时时间?
是的,如果在代码中没有显式关闭Redis连接的相关代码,通常会使用默认的短连接方式和默认的超时时间。 在Redis客户端中,如果没有显式调用关闭连接的方法,例如 对于超时时间,默认情况下,Redis客户端会使用默认的超时时间设置,通常为几秒钟。这意味着如果Redis服务器在一定时间内没有响应客户端的请求,客户端会认为连接超时,并关闭连接。 需要注意的是,虽然使用短连接和默认超时时间可能是合适的,但在某些特定的应用场景中,可能需要根据实际需求进行自定义配置,例如使用长连接或更长的超时时间来适应特定的业务需求。因此,在开发中,需要根据具体情况,显式地管理Redis连接的打开和关闭,并根据需要设置适当的超时时间。 4. 长连接可以使用在集群服务[切片集群]中吗?如redis-cluster,或者 mysql-cluster等 ?GitHub - phpredis/phpredis: A PHP extension for Redis 关于pconnect, popen的一段话,
同时加上redis-cluster支持随机读写算法,也就意味着,上一次的连接[Server 1],可能下一次[Server 2],但是Server2并没有建立TCP连接的情况。 从而个人认为,可以初步推断,应该是不行。更多确认TBD --------> (后来) 如果没有连接server2的连接, 就重新建立连接(长连接), 然后将这些连接保存共享, 等待复用. 5. predis 与 phpredis扩展的区别实际上,Redis和HTTP都是应用层协议。 应用层协议是在网络通信中位于最高层的协议,用于定义不同应用程序之间的通信规则和数据交换格式。它们建立在传输层(如TCP)之上,使用传输层提供的可靠的数据传输服务。 Redis和HTTP都运行在应用层,而不是直接在IP/TCP协议上操作。它们定义了特定的通信规则和数据格式,以便客户端和服务器之间进行有效的交互。 总结:Redis和HTTP都是应用层协议,用于定义数据交换和通信规则,但在通信方式、数据格式和用途上有所不同。 |
4.参考
参见上面文档列表 |
后续补充
...