示例#1
0
 def initpool(self):
     for name in self.nodes:
         host,port = self.nodes[name].split(':')
         #print host,port
         r = redis.StrictRedis(host=host,port=int(port),db=0)
         self.pool[name] = r
     self.hr = HashRing(self.nodes.keys())
示例#2
0
class ShardRedisManager(object):
    def __init__(self,modbase,nodes,master_of):
        self.modbase = modbase
        self.nodes = nodes
        self.master_of = master_of
        self.pool = {}
        self.hr = None
        self.initpool()
        
    def initpool(self):
        for name in self.nodes:
            host,port = self.nodes[name].split(':')
            #print host,port
            r = redis.StrictRedis(host=host,port=int(port),db=0)
            self.pool[name] = r
        self.hr = HashRing(self.nodes.keys())
    
    def find(self,key):
        name = self.hr.get_node(key)
        if name:
            print 'mapping ', key, ' to ', name
            return self.pool[name]
        raise ShardNodeNotFoundError(key)