using NetAdmin.Application.Services; using NetAdmin.Domain.Dto.Dependency; using NetAdmin.Domain.Dto.Sys.Cache; using NetAdmin.SysComponent.Application.Services.Sys.Dependency; using StackExchange.Redis; namespace NetAdmin.SysComponent.Application.Services.Sys; /// public sealed class CacheService(IConnectionMultiplexer connectionMultiplexer) // : ServiceBase, ICacheService { /// public async Task CacheStatisticsAsync() { var database = connectionMultiplexer.GetDatabase(); return new CacheStatisticsRsp((string)await database.ExecuteAsync("info").ConfigureAwait(false)) { DbSize = (long)await database.ExecuteAsync("dbSize").ConfigureAwait(false) }; } /// public async Task> GetAllEntriesAsync(PagedQueryReq req) { var database = connectionMultiplexer.GetDatabase((int?)req.Filter?.DbIndex ?? 0); var redisResults = (RedisResult[])await database .ExecuteAsync("scan", (req.Page - 1) * req.PageSize, "count" , req.PageSize) .ConfigureAwait(false); var list = ((string[])redisResults![1])!.Where(x => database.KeyType(x) == RedisType.Hash) .Select(x => database.HashGetAll(x) .Append(new HashEntry("key", x)) .ToArray() .ToStringDictionary()) .ToList() .ConvertAll(x => x.Adapt()); return new PagedQueryRsp(req.Page, req.PageSize, 10000, list); } }