Example #1
0
    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()
Example #2
0
    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()
        )