초기커밋
This commit is contained in:
141
ServerCommon/Cache/CaliumStorageCacheRequest.cs
Normal file
141
ServerCommon/Cache/CaliumStorageCacheRequest.cs
Normal file
@@ -0,0 +1,141 @@
|
||||
using ServerCore; using ServerBase;
|
||||
using StackExchange.Redis;
|
||||
|
||||
|
||||
using USER_GUID = System.String;
|
||||
|
||||
|
||||
namespace ServerCommon;
|
||||
|
||||
public class CaliumStorageCacheRequest : RedisRequestSharedBase
|
||||
{
|
||||
private const int DefaultManageExpireMs = 1 * 60 * 1000;
|
||||
|
||||
// in
|
||||
|
||||
// out
|
||||
|
||||
public CaliumStorageCacheRequest(RedisConnector redisConnector) : base("CaliumStorageCache", redisConnector)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override string onMakeKey() => "caliumstorage:start";
|
||||
private string getSyncKey() => "caliumstorage:sync:start";
|
||||
private string getRetryKey() => "caliumstorage:retry";
|
||||
|
||||
public override string toBasicString() => "CaliumStorageCacheRequest";
|
||||
|
||||
public async Task<bool> startCaliumConverterManage(bool isSync = false)
|
||||
{
|
||||
var result = new Result();
|
||||
|
||||
var redis_key = isSync ? getSyncKey() : onMakeKey();
|
||||
try
|
||||
{
|
||||
result = await onPrepareRequest();
|
||||
if (result.isFail()) return false;
|
||||
|
||||
var database = getDatabase();
|
||||
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
||||
|
||||
var redis_value = await database.StringSetAsync(redis_key, DateTimeHelper.Current.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMilliseconds(DefaultManageExpireMs), When.NotExists);
|
||||
if (false == redis_value) return false;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var error_code = ServerErrorCode.TryCatchException;
|
||||
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
||||
result.setFail(error_code, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task<bool> checkRetryKey()
|
||||
{
|
||||
var result = new Result();
|
||||
var redis_key = getRetryKey();
|
||||
try
|
||||
{
|
||||
result = await onPrepareRequest();
|
||||
if (result.isFail()) return false;
|
||||
|
||||
var database = getDatabase();
|
||||
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
||||
|
||||
var redis_value = await database.KeyExistsAsync(redis_key);
|
||||
return redis_value;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var error_code = ServerErrorCode.TryCatchException;
|
||||
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
||||
result.setFail(error_code, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> setRetryKey()
|
||||
{
|
||||
var result = new Result();
|
||||
|
||||
var redis_key = getRetryKey();
|
||||
try
|
||||
{
|
||||
result = await onPrepareRequest();
|
||||
if (result.isFail()) return false;
|
||||
|
||||
var database = getDatabase();
|
||||
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
||||
|
||||
var check_date = DateTimeHelper.Current.AddDays(1);
|
||||
var next_date = new DateTime(check_date.Year, check_date.Month, check_date.Day, 0, 0, 0);
|
||||
next_date = next_date.AddMinutes(-1);
|
||||
var expire_time = next_date - DateTimeHelper.Current;
|
||||
|
||||
var redis_value = await database.StringSetAsync(redis_key, DateTimeHelper.Current.ToString("yyyy-MM-dd HH:mm:ss"), expire_time, When.NotExists);
|
||||
if (false == redis_value) return false;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var error_code = ServerErrorCode.TryCatchException;
|
||||
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
||||
result.setFail(error_code, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task deleteRetryKey()
|
||||
{
|
||||
var result = new Result();
|
||||
|
||||
var redis_key = getRetryKey();
|
||||
try
|
||||
{
|
||||
result = await onPrepareRequest();
|
||||
if (result.isFail()) return;
|
||||
|
||||
var database = getDatabase();
|
||||
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
||||
|
||||
await database.KeyDeleteAsync(redis_key, CommandFlags.FireAndForget);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var error_code = ServerErrorCode.TryCatchException;
|
||||
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
||||
result.setFail(error_code, err_msg);
|
||||
Log.getLogger().error(result.toBasicString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user