public async Task Init(IPEndPoint endpoint, CancellationToken cancel)
        {
            var options = new RedisClientOptions();

            options.MultiplexPool.CommandConnections  = 1;
            options.MultiplexPool.SubscriptionOptions = 1;
            _client = new RedisClient(endpoint, options);

            await _client.ConnectAsync(cancel).ConfigureAwait(false);

            using (var channel = _client.CreateChannel())
            {
                channel.Dispatch("flushdb");
                var data = Enumerable.Range(0, 10).Select(i => i.ToString("0000000000"));
                await channel.ExecuteAsync(@"
                              sadd @key @data
                              sadd @key2 @data
                              set @key3 'hi this is a test'"
                                           , new
                {
                    key  = "testkeyRC",
                    key2 = "testkeyRC2",
                    key3 = "testkeyRC3",
                    data
                }).ConfigureAwait(false);
            }
        }
Exemplo n.º 2
0
        protected override RedisClientOptions GetOptions()
        {
            var options = new RedisClientOptions();
            var scripts = options.Procedures;

            scripts.Load(GetScript());
            return(options);
        }
        public void DetectMissingResponseErrors()
        {
            var options = new RedisClientOptions();

            options.InitializationCommands.Add(new PreInitializationCommand("auth vtortola"));
            var initializer = new ConnectionInitializer(options);

            var writtingStream = new MemoryStream();
            var reader         = new DummySocketReader(null);
            var writer         = new DummySocketWriter(writtingStream);

            initializer.Initialize(reader, writer);
        }
        protected virtual RedisClientOptions GetOptions()
        {
            var options = new RedisClientOptions()
            {
                UseExecutionPlanCaching = true,
                PreventPingIfActive     = false,
                Logger = new TraceRedisClientLogger()
            };

            //if (!Debugger.IsAttached)
            //    options.PingTimeout = TimeSpan.FromMilliseconds(500);

            return(options);
        }
        public async Task Init(IPEndPoint endpoint, CancellationToken cancel)
        {
            var options = new RedisClientOptions();

            options.MultiplexPool.CommandConnections  = 1;
            options.MultiplexPool.SubscriptionOptions = 1;
            _client = new RedisClient(endpoint, options);

            await _client.ConnectAsync(cancel).ConfigureAwait(false);

            using (var channel = _client.CreateChannel())
            {
                channel.Dispatch("flushdb");
                await channel.ExecuteAsync("incr @key", new { key = "whatever" }).ConfigureAwait(false);
            }
        }
        public void InitializesWithCommands()
        {
            var options = new RedisClientOptions();

            options.InitializationCommands.Add(new PreInitializationCommand("auth vtortola"));
            var initializer = new ConnectionInitializer(options);

            var writtingStream = new MemoryStream();
            var reader         = new DummySocketReader("+OK\r\n");
            var writer         = new DummySocketWriter(writtingStream);

            initializer.Initialize(reader, writer);

            writtingStream.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual("*2\r\n$4\r\nAUTH\r\n$8\r\nvtortola\r\n", new StreamReader(writtingStream).ReadToEnd());
        }
Exemplo n.º 7
0
        public Tuple <Int64, TimeSpan> Test(Int32 threads, Int32 loops)
        {
            var options = new RedisClientOptions()
            {
                Logger = new ConsoleLogger(false)
            };

            options.MultiplexPool.CommandConnections  = 1;
            options.MultiplexPool.SubscriptionOptions = 1;
            using (var client = new RedisClient(_endpoint, options))
            {
                client.ConnectAsync(CancellationToken.None).Wait();

                using (var channel = client.CreateChannel())
                    channel.Execute("flushall");

                var cancel   = new CancellationTokenSource();
                var taskList = new List <Thread>();

                var total    = threads * loops;
                var progress = 0;
                var bars     = 0;

                var sw = new Stopwatch();
                sw.Start();
                for (int threadId = 0; threadId < threads; threadId++)
                {
                    var ts = new ThreadStart(() =>
                    {
                        try
                        {
                            for (int loop = 0; loop < loops; loop++)
                            {
                                using (var channel = client.CreateChannel())
                                    RunClient(threadId.ToString() + "_" + loop.ToString(), channel, cancel.Token).Wait();

                                var p          = Interlocked.Increment(ref progress);
                                var percentage = (Int32)((p * 100D) / total);
                                while (bars < percentage)
                                {
                                    Interlocked.Increment(ref bars);
                                    Console.Write("|");
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.Write("[{0}]", ex.GetType());
                        }
                    });

                    var thread = new Thread(ts);
                    thread.Start();
                    taskList.Add(thread);
                }

                foreach (var t in taskList)
                {
                    t.Join();
                }
                sw.Stop();

                cancel.Cancel();

                return(new Tuple <Int64, TimeSpan>(progress, sw.Elapsed));
            }
        }
        public static void Configure(Container container, IPEndPoint endpoint, Boolean withLogging)
        {
            var options = new RedisClientOptions()
            {
                //PingTimeout = TimeSpan.FromSeconds(1),
                //PreventPingIfActive = false,
                Logger = withLogging? new RedisLogger() : null
            };

            options.Procedures.LoadFromAssembly(Assembly.GetExecutingAssembly());

            var client = new RedisClient(endpoint, options);

            var connect = client.ConnectAsync(CancellationToken.None);

            container.RegisterSingleton <RedisClient>(client);
            container.Register <IRedisChannel>(() => client.CreateChannel(), Lifestyle.Scoped);

            container.Register <IMessaging>(() => new RedisClientMessaging(client.CreateChannel()));

            container.Register <ICommandExecuter <VisitQuestionCommand, VisitQuestionCommandResult>, VisitQuestionCommandExecuter>();

            container.Register <ICommandExecuter <AnswerEditCommand, AnswerEditCommandResult>, AnswerEditCommandExecuter>();
            container.Register <ICommandExecuter <AnswerDeleteCommand, AnswerDeleteCommandResult>, AnswerDeleteCommandExecuter>();
            container.Register <ICommandExecuter <AnswerVoteCommand, AnswerVoteCommandResult>, AnswerVoteCommandExecuter>();
            container.Register <ICommandExecuter <AnswerCreateCommand, AnswerCreateCommandResult>, AnswerCreateCommandExecuter>();

            container.Register <ICommandExecuter <QuestionDeleteCommand, QuestionDeleteCommandResult>, QuestionDeleteCommandExecutor>();
            container.Register <ICommandExecuter <QuestionCloseCommand, QuestionCloseCommandResult>, QuestionCloseCommandExecuter>();
            container.Register <ICommandExecuter <QuestionEditCommand, QuestionEditCommandResult>, QuestionEditCommandExecuter>();
            container.Register <ICommandExecuter <QuestionVoteCommand, QuestionVoteCommandResult>, QuestionVoteCommandExecuter>();
            container.Register <ICommandExecuter <QuestionCreateCommand, QuestionCreateCommandResult>, QuestionCreateCommandExecuter>();

            container.Register <ICommandExecuter <EndSessionCommand, EndSessionCommandResult>, EndSessionCommandExecuter>();
            container.Register <ICommandExecuter <ValidateSessionCommand, ValidateSessionCommandResult>, ValidateSessionCommandExecuter>();
            container.Register <ICommandExecuter <AuthenticateCommand, AuthenticateCommandResult>, AuthenticateCommandExecuter>();

            container.Register <IModelBuilder <UserModelRequest, UserModel>, UserModelBuilder>();
            container.Register <IModelBuilder <UserInboxRequest, UserInboxModel>, UserInboxModelBuilder>();

            container.Register <IModelBuilder <AnswerRequest, AnswerViewModel>, AnswerRequestBuilder>();
            container.Register <IModelBuilder <AnswerEditFormRequest, AnswerEditFormViewModel>, AnswerEditFormRequestBuilder>();
            container.Register <IModelBuilder <AnswerDeleteFormRequest, AnswerDeleteFormViewModel>, AnswerDeleteFormRequestBuilder>();

            container.Register <IModelBuilder <HomeByTagRequest, HomeByTagViewModel>, HomeByTagRequestBuilder>();
            container.Register <IModelBuilder <HomeRequest, HomeViewModel>, HomeRequestBuilder>();

            container.Register <IModelBuilder <QuestionDeleteFormRequest, QuestionDeleteFormViewModel>, QuestionDeleteFormRequestBuilder>();
            container.Register <IModelBuilder <QuestionCloseFormRequest, QuestionCloseFormViewModel>, QuestionCloseFormRequestBuilder>();
            container.Register <IModelBuilder <QuestionEditFormRequest, QuestionEditFormViewModel>, QuestionEditFormRequestBuilder>();
            container.Register <IModelBuilder <QuestionRequest, QuestionViewModel>, QuestionRequestBuilder>();

            container.Register <IModelBuilder <TagSuggestionRequest, TagSuggestionsModel>, TagSuggestionRequestBuilder>();
            container.Register <IModelBuilder <PopularTagsRequest, PopularTagsViewModel>, PopularTagsRequestBuilder>();

            Registration registration = container.GetRegistration(typeof(IMessaging)).Registration;

            registration.SuppressDiagnosticWarning(DiagnosticType.DisposableTransientComponent, "Manually disposed");

            connect.Wait();
        }