redis(1)-epoll-多路复用

多路复用:从文字上理解,就是很多条路,我要复用一个什么东西。
解决的问题:app端  1.要接收 很多个客户端,
                                 2.每个客户端是否有数据到达

暴力解:       app遍历所有客户端 如果你有1000,或者1万个客户端就尴尬了。
优化解:       多路复用器
                     服务器就只看 多路复用器,告诉我那个客户端有数据。

客户端其实连在的是内核上,内核告诉app哪个客户端有数,app再去访问客户端。
过程就是三步1.客户端到达内核kernel
                     2.内核告诉app哪个客户端有数据 
                    3.app去访问客户端

多路复用器:只是事件传递不传数据
                     conn的处理是无序的,就是app先处理conn1 还是处理conn2是无序的,
                     但每个conn里的处理是有序的。
借鉴了网上的一些代码,用python实现一个简单的redis服务。使用方法如下:源码详见附件。
 

使用方法:1.导入模块:import socket
                     import select
          2.创建     epoll=select.epoll()
          3.注册事件
                      epoll.register(fd,eventmask)
          4.将创建的套接字添加到epoll的事件监听中
                     epoll.register(s.fileno(),select.EPOLLIN|select.EPOLLET) 事件 输入和输出
          5.while True:
            epoll list=epoll.poll()
            #对事件进行判断
          6.向epoll中注册连接SOCKET的可读事件
            epoll.register(conn.fileno(),select EPOLLIN|select Eelif events==select EPOLLIN:)
        从激活fd上接收

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值