Exemplo n.º 1
0
 public SortedSetSerialization(ILogger <SortedSetSerialization <T> > log, IRedisLink link, IMainIndexManager mainIndexManager)
     : base(log, link, mainIndexManager)
 {
     this.link             = link ?? throw new ArgumentNullException(nameof(link));
     this.mainIndexManager = mainIndexManager ?? throw new ArgumentNullException(nameof(mainIndexManager));
     this.log = log ?? throw new ArgumentNullException(nameof(log));
 }
 public RedisDocumentCacheFactory(ILoggerFactory factory, IRedisLink redis, LocalDocumentsCache local, IJsonSerializer serializer)
 {
     this.redis      = redis ?? throw new ArgumentNullException(nameof(redis));
     this.local      = local ?? throw new ArgumentNullException(nameof(local));
     this.serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
     this.factory    = factory ?? throw new ArgumentNullException(nameof(factory));
 }
Exemplo n.º 3
0
 public RedisClient(ILogger <RedisClient> logger, IRedisLink link, IMainIndexManager mainIndexManager, IDatabaseAsync database = null)
 {
     this.link             = link ?? throw new ArgumentNullException(nameof(link));
     this.mainIndexManager = mainIndexManager ?? throw new ArgumentNullException(nameof(mainIndexManager));
     this.logger           = logger ?? throw new ArgumentNullException(nameof(logger));
     this.database         = database;
 }
Exemplo n.º 4
0
 public IndexManagerFactory(ILoggerFactory loggerFactory, IRedisLink link)
 {
     this.link          = link ?? throw new ArgumentNullException(nameof(link));
     this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
     table[setName]     = new SetIndexManager(loggerFactory.CreateLogger <SetIndexManager>(), link);
     table[listName]    = new ListIndexManager(loggerFactory.CreateLogger <ListIndexManager>(), link);
     table[hashName]    = new HashIndexManager(loggerFactory.CreateLogger <HashIndexManager>(), link);
 }
 public ObjectListSerialization(ILogger <ObjectListSerialization <T> > logger, IRedisLink link, IObjectSerialization <T> objectSerialization, IRedisSetList redisSetList, IMainIndexManager mainIndexManager)
 {
     this.objectSerialization = objectSerialization ?? throw new ArgumentNullException(nameof(objectSerialization));
     this.redisSetList        = redisSetList ?? throw new ArgumentNullException(nameof(redisSetList));
     this.mainIndexManager    = mainIndexManager ?? throw new ArgumentNullException(nameof(mainIndexManager));
     this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
     this.link   = link ?? throw new ArgumentNullException(nameof(link));
 }
 public SingleItemSerialization(ILogger <SingleItemSerialization <T> > log, IRedisLink link, IObjectSerialization <T> objectSerialization, IMainIndexManager mainIndexManager)
     : base(log, link, mainIndexManager)
 {
     this.objectSerialization = objectSerialization ?? throw new ArgumentNullException(nameof(objectSerialization));
     this.mainIndexManager    = mainIndexManager ?? throw new ArgumentNullException(nameof(mainIndexManager));
     this.log  = log ?? throw new ArgumentNullException(nameof(log));
     this.link = link ?? throw new ArgumentNullException(nameof(link));
 }
Exemplo n.º 7
0
        public RedisDocumentCache(ILogger <RedisDocumentCache> log, POSTaggerType tagger, IRedisLink manager, LocalDocumentsCache local, IJsonSerializer serializer)
        {
            this.tagger  = tagger;
            this.manager = manager ?? throw new ArgumentNullException(nameof(manager));
            this.local   = local ?? throw new ArgumentNullException(nameof(local));
            this.log     = log ?? throw new ArgumentNullException(nameof(log));

            manager.PersistencyRegistration.RegisterObjectHashSingle <LightDocument>(new JsonDataSerializer(serializer));
        }
Exemplo n.º 8
0
        public async Task Setup()
        {
            redisInstance = new RedisInside.Redis(i => i.Port(6666).LogTo(item => Global.Logger.LogDebug(item)));
            var config = XDocument.Load(Path.Combine(TestContext.CurrentContext.TestDirectory, @"Config\redis.config")).XmlDeserialize <RedisConfiguration>();

            config.ServiceName = "IT";
            redis = await new ModuleHelper(config).Provider.GetService <IAsyncServiceFactory <IRedisLink> >().GetService(true);
            redis.Multiplexer.Flush();
            key = new ObjectKey("Test", "Key");
        }
Exemplo n.º 9
0
 public AmazonRepository(ILogger <AmazonRepository> logger, IRedisLink manager)
 {
     this.manager = manager ?? throw new ArgumentNullException(nameof(manager));
     this.logger  = logger ?? throw new ArgumentNullException(nameof(logger));
     manager.PersistencyRegistration.RegisterHashsetSingle <AmazonReviewData>();
     manager.PersistencyRegistration.RegisterHashsetSingle <UserData>();
     manager.PersistencyRegistration.RegisterHashsetSingle <ProductData>();
     // not sure why it was added originally as object but now we have to stick due to compatibility issue
     manager.PersistencyRegistration.RegisterObjectHashSingle <AmazonTextData>(new FlatProtoDataSerializer(true, MemoryStreamInstances.MemoryStream), true);
 }
Exemplo n.º 10
0
        public RedisTransaction(ILoggerFactory loggerFactory, IRedisLink link, ITransaction transaction, IMainIndexManager indexManager)
        {
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            this.Transaction = transaction ?? throw new ArgumentNullException(nameof(transaction));
            this.link        = link ?? throw new ArgumentNullException(nameof(link));
            log    = loggerFactory.CreateLogger <RedisTransaction>();
            Client = new RedisClient(loggerFactory.CreateLogger <RedisClient>(), link, indexManager, transaction);
        }
Exemplo n.º 11
0
        public RedisDocumentCache(ILogger <RedisDocumentCache> log, POSTaggerType tagger, IRedisLink manager, LocalDocumentsCache local)
        {
            this.tagger  = tagger;
            this.manager = manager ?? throw new ArgumentNullException(nameof(manager));
            this.local   = local ?? throw new ArgumentNullException(nameof(local));
            this.log     = log ?? throw new ArgumentNullException(nameof(log));

            if (!manager.HasDefinition <LightDocument>())
            {
                manager.RegisterNormalized <LightDocument>(new XmlDataSerializer()).IsSingleInstance = true;
            }
        }
Exemplo n.º 12
0
 public ListSerialization(ILogger <ListSerialization <T> > logger,
                          IRedisLink link,
                          IRedisSetList redisSetList,
                          IMainIndexManager indexManager,
                          IDataSerializer serializer)
     : base(logger, link, indexManager)
 {
     this.link         = link ?? throw new ArgumentNullException(nameof(link));
     this.redisSetList = redisSetList ?? throw new ArgumentNullException(nameof(redisSetList));
     this.serializer   = serializer ?? throw new ArgumentNullException(nameof(serializer));
     log = logger ?? throw new ArgumentNullException(nameof(logger));
 }
        public void Setup()
        {
            local = new LocalDocumentsCache(ApplicationLogging.LoggerFactory.CreateLogger <LocalDocumentsCache>(), new MemoryCache(new MemoryCacheOptions()));
            redis = new RedisInside.Redis(i => i.Port(6666).LogTo(item => log.LogDebug(item)));
            IServiceCollection service = new ServiceCollection();

            service.RegisterModule(new RedisServerModule(new RedisConfiguration("localhost", 6666)
            {
                ServiceName = "Test"
            }));
            link     = service.BuildServiceProvider().GetService <IRedisLink>();
            instance = new RedisDocumentCache(new NullLogger <RedisDocumentCache>(), POSTaggerType.Simple, link, local);
        }
Exemplo n.º 14
0
        public RedisPersistency(ILogger <RedisPersistency> log, IRedisLink redis, IMemoryCache cache)
        {
            if (redis == null)
            {
                throw new ArgumentNullException(nameof(redis));
            }

            this.cache = cache ?? throw new ArgumentNullException(nameof(cache));
            this.log   = log ?? throw new ArgumentNullException(nameof(log));
            redis.RegisterHashType <TweetData>().IsSingleInstance = true;
            redis.RegisterHashType <TweetUser>().IsSingleInstance = true;
            this.redis = redis;
        }
Exemplo n.º 15
0
        public static RedisKey GetIndexKey(this IRedisLink link, IIndexKey index)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (index == null)
            {
                throw new ArgumentNullException(nameof(index));
            }

            return(string.IsNullOrEmpty(index.RepositoryKey) ? link.GetKey(index.Key) : link.GetKey($"{index.RepositoryKey}:{index.Key}"));
        }
Exemplo n.º 16
0
        public static RedisKey GetKey(this IRedisLink link, string key)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            return(link.Name + ":" + key);
        }
Exemplo n.º 17
0
        public static RedisKey GetKey(this IRedisLink link, IDataKey key)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            return(GetKey(link, key.FullKey));
        }
Exemplo n.º 18
0
        public static IObservable <HashEntry> GetHash(this IRedisLink link, string key)
        {
            return(Observable.Create <HashEntry>(
                       obs =>
            {
                IEnumerable <HashEntry> hashEntries = link.Database.HashScan(key);
                foreach (var entry in hashEntries)
                {
                    obs.OnNext(entry);
                }

                obs.OnCompleted();
                return Disposable.Empty;
            }));
        }
Exemplo n.º 19
0
        public static async Task Reindex(this IRedisLink link, ILoggerFactory factory, IDataKey key)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            var log = factory.CreateLogger("IndexManagerExtension");

            log.LogDebug("Redindex {0}", key);
            var manager = new IndexManagerFactory(factory, link);
            var tasks   = new List <Task>();
            var total   = 0;

            foreach (var index in key.Indexes)
            {
                var indexManagers = manager.Create(index);

                tasks.Add(indexManagers.Reset(link.Database, index));

                await Task.WhenAll(tasks.ToArray()).ConfigureAwait(false);

                var actualKey = (string)link.GetKey(key);
                var mask      = Regex.Replace(actualKey, $"{FieldConstants.Object}:.*", $"{FieldConstants.Object}*", RegexOptions.IgnoreCase);

                tasks.Clear();
                foreach (var redisKey in link.Multiplexer.GetKeys(mask))
                {
                    total++;
                    var rawId = Regex.Replace(redisKey, $".*:{FieldConstants.Object}:", string.Empty, RegexOptions.IgnoreCase);
                    tasks.Add(indexManagers.AddRawIndex(link.Database, rawId, index));
                }
            }

            await Task.WhenAll(tasks).ConfigureAwait(false);

            log.LogDebug("ReIndexed {0} {1}", key, total);
        }
Exemplo n.º 20
0
        public static Task DeleteAll(this IRedisLink link, IDatabaseAsync database, IDataKey key)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (database == null)
            {
                throw new ArgumentNullException(nameof(database));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            var actualKey = link.GetKey(key);

            return(database.KeyDeleteAsync(actualKey));
        }
Exemplo n.º 21
0
        public static Task SetExpire(this IRedisLink link, IDatabaseAsync database, IDataKey key, DateTime dateTime)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (database == null)
            {
                throw new ArgumentNullException(nameof(database));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            var actualKey = link.GetKey(key);

            return(database.KeyExpireAsync(actualKey, dateTime));
        }
Exemplo n.º 22
0
        public static Task <bool> ContainsRecord(this IRedisLink link, IDatabaseAsync database, IDataKey key)
        {
            if (link == null)
            {
                throw new ArgumentNullException(nameof(link));
            }

            if (database == null)
            {
                throw new ArgumentNullException(nameof(database));
            }

            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            var actualKey = link.GetKey(key);

            return(database.KeyExistsAsync(actualKey));
        }
Exemplo n.º 23
0
        public void Setup()
        {
            service = new RedisInside.Redis(config => config.Port(6666));

            var collection = new ServiceCollection();

            collection.AddLogging(builder => builder.AddConsole());
            collection.RegisterModule(new RedisModule(new NullLogger <RedisModule>(), new RedisConfiguration("localhost", 6666)));
            collection.RegisterModule <CommonModule>();
            var provider = collection.BuildServiceProvider();

            link = provider.GetService <IRedisLink>();
            link.Open();
            instance = new AmazonRepository(new NullLogger <AmazonRepository>(), link);
            review   = AmazonReview.Construct(
                new ProductData {
                Id = "Product1"
            },
                new UserData {
                Id = "User1"
            },
                new AmazonReviewData {
                Id = "One", UserId = "User1", ProductId = "Product1"
            },
                new AmazonTextData {
                Text = "Test"
            });
            review.User.Name        = "Andrius";
            review.Product.Name     = "Nokia";
            review.Product.Category = ProductCategory.Electronics;
            review.Data.Date        = new DateTime(2012, 01, 01);
            review.Product.Price    = 10;
            var task1 = instance.Save(review);

            review.Data.Id = "Two";
            review         = AmazonReview.Construct(review.Product, review.User, review.Data, review.TextData);
            var task2 = instance.Save(review);

            Task.WaitAll(task1, task2);
        }
Exemplo n.º 24
0
        public async Task Setup()
        {
            redisOne = new RedisInside.Redis(i => i.LogTo(item => Global.Logger.LogDebug(item)).WithPersistence());
            redisTwo = new RedisInside.Redis(i => i.LogTo(item => Global.Logger.LogDebug(item)).WithPersistence());

            await Task.Delay(500).ConfigureAwait(false);

            var config = XDocument.Load(Path.Combine(TestContext.CurrentContext.TestDirectory, @"Config\redis.config")).XmlDeserialize <RedisConfiguration>();

            config.Endpoints[0].Port = ((IPEndPoint)redisOne.Endpoint).Port;
            linkOne = await new ModuleHelper(config).Provider.GetService <IAsyncServiceFactory <IRedisLink> >().GetService(true);

            config = XDocument.Load(Path.Combine(TestContext.CurrentContext.TestDirectory, @"Config\redis.config")).XmlDeserialize <RedisConfiguration>();
            config.Endpoints[0].Port = ((IPEndPoint)redisTwo.Endpoint).Port;
            var provider = new ModuleHelper(config).Provider;

            linkTwo = await provider.GetService <IAsyncServiceFactory <IRedisLink> >().GetService(true);

            factory = provider.GetService <IReplicationFactory>();

            linkOne.Multiplexer.Flush();
            linkTwo.Multiplexer.Flush();

            var data = linkOne.Database.ListRange(key);

            Assert.AreEqual(0, data.Length);

            // adding new record
            linkOne.Database.ListLeftPush(key, "Test");
            data = linkOne.Database.ListRange(key);
            Assert.AreEqual(1, data.Length);

            // checking nothing in another database
            data = linkTwo.Database.ListRange(key);
            Assert.AreEqual(0, data.Length);
        }
Exemplo n.º 25
0
 public AnalysedDocRepository(IRedisLink manager)
 {
     this.manager = manager ?? throw new ArgumentNullException(nameof(manager));
     manager.PersistencyRegistration.RegisterHashsetSingle(new DictionarySerializer(new[] { "No" }));
 }
Exemplo n.º 26
0
 public IdentityRepository(ILogger <EntityRepository <Identity> > log, IRedisLink redis)
     : base(log, redis, "Identity")
 {
 }
Exemplo n.º 27
0
 public IdentityRepositoryEx(ILogger <IdentityRepository> log, IRedisLink redis, IJsonSerializer serializer)
     : base(log, redis, "Identity", register: handler => handler.RegisterObjectHashSingle <Identity>(new JsonDataSerializer(serializer)))
 {
 }
Exemplo n.º 28
0
 public PersistencyRegistrationHandler(ILoggerFactory loggerFactory, IRedisLink link)
 {
     this.loggerFactory = loggerFactory;
     this.link          = link;
 }
Exemplo n.º 29
0
 public RedisList(ILogger <RedisList> logger, IRedisLink link, IMainIndexManager mainIndexManager)
 {
     this.link             = link ?? throw new ArgumentNullException(nameof(link));
     this.mainIndexManager = mainIndexManager ?? throw new ArgumentNullException(nameof(mainIndexManager));
     this.logger           = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Exemplo n.º 30
0
 public SetIndexManager(ILogger <SetIndexManager> logger, IRedisLink link)
     : base(logger, link)
 {
 }