Beispiel #1
0
        public RedisConnectionPool(string redisConnectionString, long database, RedisLuaScriptManager luaScriptManager)
        {
            // Init the pooledRedisClient Manager
            RedisClientManagerConfig config = new RedisClientManagerConfig();

            config.DefaultDb        = database;
            config.MaxReadPoolSize  = RedisConnectionPool.DEFAULT_MAX_READ_POOL_SIZE;
            config.MaxWritePoolSize = RedisConnectionPool.DEFAULT_MAX_WRITE_POOL_SIZE;

            this.redisManagerPool =
                new PooledRedisClientManager(
                    new string[] { redisConnectionString },
                    new string[] { redisConnectionString },
                    config);

            this.RequestBatchSize = RedisConnectionPool.DEFAULT_BATCH_SIZE;
            this.WindowMicroSec   = RedisConnectionPool.DEFAULT_WINDOW_MICRO_SEC;
            this.Active           = true;

            this.redisRequestQueue = new Queue <RedisRequest>(this.RequestBatchSize);

            this.redisResponseVisitor = new RedisResponseVisitor();
            this.txEntryVisitor       = new RedisTxEntryRequestVisitor(luaScriptManager);
            this.versionEntryVisitor  = new RedisVersionEntryRequestVisitor(luaScriptManager);

            this.spinLock = new SpinLock();

            lastFlushTime = DateTime.Now.Ticks / 10;
        }
 /// <summary>
 /// Init a redis client manager with given read and write hosts
 /// </summary>
 /// <param name="readWriteHosts">An array of connections strings, with host and port</param>
 internal RedisClientManager(string[] readWriteHosts, RedisLuaScriptManager luaScriptManager)
 {
     if (readWriteHosts == null || readWriteHosts.Length == 0)
     {
         throw new ArgumentException("readWriteHosts at least have a host");
     }
     this.readWriteHosts        = readWriteHosts;
     this.redisLuaScriptManager = luaScriptManager;
 }
        public RedisVersionDbVisitor(
            RedisConnectionPool clientPool,
            RedisLuaScriptManager redisLuaScriptManager,
            RedisResponseVisitor redisResponseVisitor,
            RedisVersionDbMode mode)
        {
            this.clientPool            = clientPool;
            this.redisClient           = clientPool.GetRedisClient();
            this.redisLuaScriptManager = redisLuaScriptManager;
            this.RedisResponseVisitor  = redisResponseVisitor;
            this.redisVersionDbMode    = mode;

            this.redisRequests = new List <RedisRequest>();
            this.reqIndex      = 0;
        }
Beispiel #4
0
        public RedisVersionTable(VersionDb versionDb, string tableId, long redisDbIndex)
            : base(versionDb, tableId, versionDb.PartitionCount)
        {
            this.redisDbIndex       = redisDbIndex;
            this.responseVisitor    = new RedisResponseVisitor();
            this.redisVersionDb     = ((RedisVersionDb)this.VersionDb);
            this.RedisManager       = redisVersionDb.RedisManager;
            this.LuaManager         = redisVersionDb.RedisLuaManager;
            this.singletonConnPool  = redisVersionDb.SingletonConnPool;
            this.redisVersionDbMode = redisVersionDb.Mode;

            this.requestQueues = new Queue <VersionEntryRequest> [this.PartitionCount];
            this.flushQueues   = new Queue <VersionEntryRequest> [this.PartitionCount];
            this.queueLatches  = new int[this.PartitionCount];

            RedisConnectionPool clientPool = null;

            for (int pid = 0; pid < this.PartitionCount; pid++)
            {
                if (this.redisVersionDbMode == RedisVersionDbMode.Cluster)
                {
                    clientPool = this.singletonConnPool;
                }
                else
                {
                    clientPool = this.RedisManager.GetClientPool(
                        this.redisDbIndex, RedisVersionDb.GetRedisInstanceIndex(pid));
                }
                this.tableVisitors[pid] = new RedisVersionTableVisitor(
                    clientPool, this.LuaManager, this.responseVisitor, this.redisVersionDbMode);

                this.requestQueues[pid] = new Queue <VersionEntryRequest>(VersionDb.REQUEST_QUEUE_CAPACITY);
                this.flushQueues[pid]   = new Queue <VersionEntryRequest>(VersionDb.REQUEST_QUEUE_CAPACITY);
                this.queueLatches[pid]  = 0;
            }
        }
 internal RedisVersionEntryRequestVisitor(RedisLuaScriptManager luaScriptManager)
 {
     this.redisLuaScriptManager = luaScriptManager;
 }
 public RedisTxEntryRequestVisitor(RedisLuaScriptManager redisLuaScriptManager)
 {
     this.redisLuaScriptManager = redisLuaScriptManager;
 }