Пример #1
0
        /// <summary>
        ///  分割 key
        /// </summary>
        static RedisDbKeyModel SplitKeys(RedisDbModel db, string key)
        {
            if (key.IndexOf(SPLITTER) > 0)
            {
                var name     = key.Substring(0, key.IndexOf(SPLITTER));
                var keyModel = new RedisDbKeyModel(db, null)
                {
                    FullKey   = key,
                    Name      = name,
                    KeyPrefix = name,
                };

                ResolveKey(keyModel);

                return(keyModel);
            }
            else
            {
                return(new RedisDbKeyModel(db, null)
                {
                    FullKey = key,
                    Name = key,
                    KeyPrefix = key,
                });
            }
        }
Пример #2
0
        public async Task <bool> KeyRenameAsync(RedisDbKeyModel key, string newKey)
        {
            var db = key.RedisDb;

            var result = await _redisClientService.KeyRenameAsync(db.RedisConnect.Guid, db.Index, key.FullKey, newKey);

            return(result);
        }
Пример #3
0
        public async Task <RedisDbKeyValueModel> GetKeyValueAsync(RedisDbKeyModel key)
        {
            var db = key.RedisDb;

            var value = await _redisClientService.GetKeyValueAsync(db.RedisConnect.Guid, db.Index, key.FullKey);

            value.RedisDbKey = key;

            return(value);
        }
Пример #4
0
        public void ResolveKeys(RedisDbKeyModel key, IList <RedisDbKeyModel> keys)
        {
            var item = keys.FirstOrDefault(t => t.KeyPrefix == key.KeyPrefix);

            if (item == null)
            {
                keys.Add(key);
                item = key;
            }

            if (key.HasChildren)
            {
                foreach (var ckey in key.Childrens)
                {
                    ResolveKeys(ckey, item.Childrens);
                }
            }
        }
Пример #5
0
        static void ResolveKey(RedisDbKeyModel currentKey)
        {
            if (currentKey == null)
            {
                throw new ArgumentNullException(nameof(currentKey));
            }

            var fullKey = currentKey.FullKey;

            if (fullKey == currentKey.KeyPrefix)
            {
                return;
            }

            var currentPrefix = currentKey.KeyPrefix;

            var nextSplitterIndex = fullKey.IndexOf(SPLITTER, currentPrefix.Length + 1);

            string nextPrefix = string.Empty;
            string nextName   = string.Empty;

            if (nextSplitterIndex == -1)
            {
                // key end
                nextPrefix = fullKey;
                nextName   = nextPrefix.Remove(0, currentPrefix.Length + 1);
            }
            else
            {
                nextPrefix = fullKey.Substring(0, nextSplitterIndex);
                nextName   = nextPrefix.Remove(0, currentPrefix.Length + 1);
            }

            var nextKey = new RedisDbKeyModel(currentKey.RedisDb, currentKey)
            {
                FullKey   = currentKey.FullKey,
                KeyPrefix = nextPrefix,
                Name      = nextName,
            };

            currentKey.Childrens.Add(nextKey);

            ResolveKey(nextKey);
        }
Пример #6
0
        public async Task <bool> StringSetAsync(RedisDbKeyModel key, string text)
        {
            var db = key.RedisDb;

            return(await _redisClientService.StringSetAsync(db.RedisConnect.Guid, db.Index, key.FullKey, text));
        }
Пример #7
0
        public async Task <bool> SetKeyExpireAsync(RedisDbKeyModel key, TimeSpan?time)
        {
            var db = key.RedisDb;

            return(await _redisClientService.KeyExpireAsync(db.RedisConnect.Guid, db.Index, key.FullKey, time));
        }
Пример #8
0
        public async Task <bool> KeyDeleteAsync(RedisDbKeyModel key)
        {
            var db = key.RedisDb;

            return(await _redisClientService.KeyDeleteAsync(db.RedisConnect.Guid, db.Index, key.FullKey));
        }