/// <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, }); } }
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); }
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); }
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); } } }
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); }
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)); }
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)); }
public async Task <bool> KeyDeleteAsync(RedisDbKeyModel key) { var db = key.RedisDb; return(await _redisClientService.KeyDeleteAsync(db.RedisConnect.Guid, db.Index, key.FullKey)); }