python 实现类似tweproxy 和codes的功能的redis代理功能

手动编写redis代理软件脚本  实现类似tweproxy  和codes的功能

已经实现内容如下:

起1个代理ip和端口  redisl客户端连接代理  然后脚本通过一致性hash分发key到后端的redis

脚本如下

import SocketServer,sys
from threading import Thread
import socket
from hash_ring import HashRing

redis_servers = [‘127.0.0.1:6480‘,
                 ‘127.0.0.1:6481‘,
                 ‘127.0.0.1:6482‘]
 
ring = HashRing(redis_servers)

class service(SocketServer.BaseRequestHandler):
    def handle(self):
        data = ‘dummy‘
        print "Client connected with ", self.client_address
        while len(data):
            data = self.request.recv(1024)
	    if data:
	        key =(data.split("\n"))[4]
		server = ring.get_node(key)
		s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)      
		s.connect(((server.split(":"))[0],int((server.split(":"))[1])))
	        s.sendall(data)
		r_data  = s.recv(1024)
		print server
            self.request.send(r_data)

        print "Client exited"
        self.request.close()

class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    pass
try:
    t = ThreadedTCPServer((‘‘,6379), service)
    t.serve_forever()
except KeyboardInterrupt:
    sys.exit(1)
时间: 2024-08-08 12:59:31

python 实现类似tweproxy 和codes的功能的redis代理功能的相关文章

python 解析类似 '\xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3'的unicode码为汉字

    str = '\xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3' b = repr(str) print unicode(eval(b),"gbk") 即可看到相应的汉字:拒绝访问 python 解析类似 '\xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3'的unicode码为汉字

Android 实现用户列表信息滑动删除功能和选择删除功能

在项目开发过程中,常常需要对用户列表的信息进行删除的操作.Android中常用的删除操作方式有两种 ,一种就是类似微信的滑动出现删除按钮方式,还有一种是通过CheckBox进行选择,然后通过按钮进行删除的方式.本来的实例集成上述的两种操作方式来实现用户列表删除的效果. 设计思路:在适配器类MyAdapter一个滑动删除按钮显示或隐藏的Map,一个用于CheckBox是否选中的Map和一个与MainAcitivyt进行数据交互的接口ContentsDeleteListener,同时该接口包含两个方

(3)redis队列功能

Redis队列功能介绍 List 常用命令: Blpop删除,并获得该列表中的第一元素,或阻塞,直到有一个可用 Brpop删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用 Brpoplpush Lindex获取一个元素,通过其索引列表 Linsert在列表中的另一个元素之前或之后插入一个元素 Llen获得队列(List)的长度 Lpop从队列的左边出队一个元素 Lpush从队列的左边入队一个或多个元素 Lpushx当队列存在时,从队到左边入队一个元素 Lrange从列表中获取指定返回的

Redis附加功能之Redis流水线pipeline

流水线功能的目的:通过减少客户端与服务器之间的通信次数来提高程序的执行效率. 一.通信 在一般情况下, 用户每执行一个 Redis 命令,客户端与服务器都需要进行一次通信:客户端会将命令请求发送给服务器,而服务器则会将执行命令所得的结果返回给客户端. 当程序执行一些复杂的操作时, 客户端可能需要执行多个命令, 并与服务器进行多次通信. 假设我们正在构建一个为图书打标签(tag)的网站,这个网站上的每本图书都可以被打上任意多个标签.并且为了记录哪些标签的图书是最多人阅览的,我们会为每个标签创建一个

搜索功能、翻页功能、输入框的测试用例设计及知识

  搜索功能测试用例设计 搜索功能点进行分解,把测试用例分解为多个测试场景 场景编号 场景描述 预期结果 场景一 页面检查 正确 场景二 默认条件搜索 查询结果正确 场景三 修改可选条件搜索 查询结果正确 场景四 修改输入条件搜索 查询结果正确 场景五 修改区间条件搜索 查询结果正确 场景六 组合可选.输入条件搜索 查询结果正确 场景七 操作后检查搜索条件及查询结果 查询结果正确 场景八 错误.空记录搜索 查询结果为空 测试步骤描述 按照已经分解的测试场景顺序,逐个描述测试场景的测试步骤 测试场

Lync 客户端功能对比之IM功能

在本文中,主要介绍[IM功能],具体对比如下所示: Lync 客户端功能对比之IM功能,布布扣,bubuko.com

DataUml Design 介绍9 - DataUML 1.3版本功能(查询分析器功能等)

DataUML 1.3 (下载)主要更新内容如下: 1.增加查询分析器功能: 2.增加打开历史文件记录功能: 3.修改查询对象功能: 4.增加显示对象长度功能: 5.增加配置显示表字段功能: 6.增加快速定位对象功能: 一.查询分析器功能 支持多种数据库的查询,能够执行SQL语句进行查询数据和操作数据.如下图: 1.点击"打开"可以打开一个SQL文件: 2.点击"新建查询"按钮新建一个查询分析器,可以选择数据源进行查询数据: 3.点击"执行"可以

Nginx代理功能与负载均衡详解

Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的配置说明 1.上一篇中我们在http模块中有下面的配置,当代理遇到状态码为404时,我们把404页面导向百度. error_page 404 https://www.baidu.com; #错误页 然而这个配置,细心的朋友可以发现他并没有起作用. 如果我们想让他起作用,我们必须配合着下面的配置一起使用 p

Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能

在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口. 有关的修改都在Senparc.Weixin/Utilities/HttpUtility/RequestUtility.cs: 1 #region 代理 2 3 private static WebProxy _webproxy = null; 4 5 /// <summary> 6 /// 设置Web代理 7 /// </summary> 8 /