using StackExchange.Redis; using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; namespace ServerCommon; public class UgcNpcRankManageCacheRequest : RedisRequestSharedBase { private const int DefaultManageExpireMinute = 1; // in // out public UgcNpcRankManageCacheRequest(RedisConnector redisConnector) : base("UgcNpcRankManage", redisConnector) { } protected override string onMakeKey() => "rank:manage"; private string getLastRunningKey() => $"{onMakeKey()}:last"; public override string toBasicString() => "UgcNpcRankManageCacheRequest"; public async Task isExistKey(string key) { try { var result = await onPrepareRequest(); if (result.isFail()) return false; var database = getDatabase(); var redis_value = await database.KeyExistsAsync(key); return redis_value; } catch (Exception e) { var error_code = ServerErrorCode.TryCatchException; var err_msg = $"Failed to get isExistKey from Redis !!! : : errorCode{error_code}, errMsg:{e.Message} - {nameof(isExistKey)}"; Log.getLogger().error(err_msg); } return false; } public async Task setStartUgcNpcRankManage() { var result = new Result(); try { result = await onPrepareRequest(); if (result.isFail()) return false; var database = getDatabase(); var redis_value = await database.StringSetAsync(getKey(), DateTimeHelper.Current.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(DefaultManageExpireMinute), When.NotExists); if (false == redis_value) return false; } catch (Exception e) { var error_code = ServerErrorCode.TryCatchException; var err_msg = $"Failed to get UgcNpcRankManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}"; result.setFail(error_code, err_msg); Log.getLogger().error(result.toBasicString()); return false; } return true; } }