def __init__(self, server, params): super(ShardedRedisCache, self).__init__(server, params) self.sharder = HashRing() for server in self.servers: client = self.create_client(server) self.clients[client.connection_pool.connection_identifier] = client self.sharder.add(client.connection_pool.connection_identifier) self.client_list = self.clients.values()
def test_make_key_distribution(self): ring = HashRing() nodes = set([str(node._node) for node in self.cache.sharder._nodes]) nodes = [ ('127.0.0.1', 6379, 15, '/tmp/redis0.sock'), ('127.0.0.1', 6379, 15, '/tmp/redis1.sock'), ('127.0.0.1', 6379, 15, '/tmp/redis2.sock'), ] for node in nodes: ring.add(str(node)) n = 50000 counter = Counter( [ring.get_node(str(i)) for i in range(n)] ) self.assertLess( ((stddev(counter.values()) / n) * 100.0), 10, counter.values() )