1 /* 2 * Hunt - A redis client library for D programming language. 3 * 4 * Copyright (C) 2018-2019 HuntLabs 5 * 6 * Website: https://www.huntlabs.net/ 7 * 8 * Licensed under the Apache-2.0 License. 9 * 10 */ 11 12 module hunt.redis.ShardedRedisPool; 13 14 // import hunt.redis.BinaryRedis; 15 // import hunt.redis.BinaryShardedRedis; 16 // import hunt.redis.Redis; 17 // import hunt.redis.RedisShardInfo; 18 // import hunt.redis.ShardedRedis; 19 // import hunt.redis.ShardedRedisPool; 20 // import hunt.redis.util.Hashing; 21 // import hunt.redis.util.Pool; 22 23 // import hunt.collection.List; 24 25 // // import hunt.pool.PooledObject; 26 // // import hunt.pool.PooledObjectFactory; 27 // // import hunt.pool.impl.DefaultPooledObject; 28 // import hunt.util.pool; 29 30 // import hunt.Boolean; 31 32 // import std.regex; 33 // alias Pattern = Regex!char; 34 // alias GenericObjectPoolConfig = PoolOptions; 35 36 // class ShardedRedisPool : Pool!(ShardedRedis) { 37 // this(GenericObjectPoolConfig poolConfig, List!(RedisShardInfo) shards) { 38 // this(poolConfig, shards, Hashing.MURMUR_HASH); 39 // } 40 41 // this(GenericObjectPoolConfig poolConfig, List!(RedisShardInfo) shards, 42 // Hashing algo) { 43 // this(poolConfig, shards, algo, Pattern.init); 44 // } 45 46 // this(GenericObjectPoolConfig poolConfig, List!(RedisShardInfo) shards, 47 // Pattern keyTagPattern) { 48 // this(poolConfig, shards, Hashing.MURMUR_HASH, keyTagPattern); 49 // } 50 51 // this(GenericObjectPoolConfig poolConfig, List!(RedisShardInfo) shards, 52 // Hashing algo, Pattern keyTagPattern) { 53 // super(poolConfig, new ShardedRedisFactory(shards, algo, keyTagPattern)); 54 // } 55 56 // override 57 // ShardedRedis getResource() { 58 // ShardedRedis jedis = super.getResource(); 59 // jedis.setDataSource(this); 60 // return jedis; 61 // } 62 63 // override 64 // void returnBrokenResource(ShardedRedis resource) { 65 // if (resource !is null) { 66 // returnBrokenResourceObject(resource); 67 // } 68 // } 69 70 // override 71 // void returnResource(ShardedRedis resource) { 72 // if (resource !is null) { 73 // resource.resetState(); 74 // returnResourceObject(resource); 75 // } 76 // } 77 // } 78 79 80 // /** 81 // * PoolableObjectFactory custom impl. 82 // */ 83 // private class ShardedRedisFactory : PooledObjectFactory!(ShardedRedis) { 84 // private List!(RedisShardInfo) shards; 85 // private Hashing algo; 86 // private Pattern keyTagPattern; 87 88 // this(List!(RedisShardInfo) shards, Hashing algo, Pattern keyTagPattern) { 89 // this.shards = shards; 90 // this.algo = algo; 91 // this.keyTagPattern = keyTagPattern; 92 // } 93 94 // override 95 // IPooledObject makeObject() { 96 // ShardedRedis jedis = new ShardedRedis(shards, algo, keyTagPattern); 97 // return new DefaultPooledObject!(ShardedRedis)(jedis); 98 // } 99 100 // override 101 // void destroyObject(IPooledObject pooledRedis) { 102 // ShardedRedis shardedRedis = (cast(PooledObject!ShardedRedis)pooledRedis).getObject(); 103 // assert(shardedRedis !is null); 104 // foreach(Redis jedis ; shardedRedis.getAllShards()) { 105 // if (jedis.isConnected()) { 106 // try { 107 // try { 108 // jedis.quit(); 109 // } catch (Exception e) { 110 111 // } 112 // jedis.disconnect(); 113 // } catch (Exception e) { 114 115 // } 116 // } 117 // } 118 // } 119 120 // override 121 // bool validateObject(IPooledObject pooledRedis) { 122 // try { 123 // ShardedRedis jedis = (cast(PooledObject!ShardedRedis)pooledRedis).getObject(); 124 // assert(jedis !is null); 125 126 // foreach(Redis shard ; jedis.getAllShards()) { 127 // if (shard.ping() != "PONG") { 128 // return false; 129 // } 130 // } 131 // return true; 132 // } catch (Exception ex) { 133 // return false; 134 // } 135 // } 136 137 // override 138 // void activateObject(IPooledObject p) { 139 140 // } 141 142 // override 143 // void passivateObject(IPooledObject p) { 144 145 // } 146 // }