redis 작업 업로드

This commit is contained in:
김민서 2024-04-02 15:11:26 +09:00
parent ffcd7500bb
commit eba597fb51
1 changed files with 107 additions and 1 deletions

View File

@ -1,7 +1,113 @@
namespace Server.System using Newtonsoft.Json;
using StackExchange.Redis;
namespace Server.System
{ {
public class Redis public class Redis
{ {
ConnectionMultiplexer redis;
IDatabase db;
bool local = false;
Dictionary<string, string> stringType;
Dictionary<string, List<string>> listType;
Dictionary<string, List<rank>> zType;
Dictionary<string, Dictionary<string, object>> hashType;
public Redis(string host = "127.0.0.1", int port = 6379)
{
if(host == "localhost")
{
local = true;
stringType = new Dictionary<string, string>();
listType = new Dictionary<string, List<string>>();
zType = new Dictionary<string, List<rank>>();
hashType = new Dictionary<string, Dictionary<string, object>>();
}
else
{
redis = ConnectionMultiplexer.Connect($"{host}:{port}");
db = redis.GetDatabase();
}
test();
}
public void test()
{
SetString("test", "key1");
Console.WriteLine("123123");
Console.WriteLine(GetString<string>("key1"));
Console.WriteLine("123123");
}
public void SetString(object value, params string[] keys)
{
if (local)
{
if (listType.ContainsKey(KeySet(keys)))
{
stringType[KeySet(keys)] = JsonConvert.SerializeObject(value);
}
else
{
stringType.Add(KeySet(keys), JsonConvert.SerializeObject(value));
}
}
else
db.StringSet(KeySet(keys), JsonConvert.SerializeObject(value));
}
public T GetString<T>(params string[] keys)
{
if (local)
return JsonConvert.DeserializeObject<T>(stringType[KeySet(keys)]);
else
return JsonConvert.DeserializeObject<T>(db.StringGet(key: KeySet(keys)));
}
public void SetList(object value, params string[] keys)
{
if (local)
{
if (listType.ContainsKey(KeySet(keys)))
{
listType[KeySet(keys)].Add(JsonConvert.SerializeObject(value));
}
else
{
List<string> newdata = [JsonConvert.SerializeObject(value)];
listType.Add(KeySet(keys), newdata);
}
}
else
db.ListRightPush(KeySet(keys), JsonConvert.SerializeObject(value));
}
private string KeySet(string[] keys)
{
return string.Join(":", keys);
}
//public T Test<T>(string key, int index)
//{
// // Implementation logic here
// // You can access 'value' class via typeof(T)
// return typeof(T) null;
//}
public class rank
{
public string value;
public double score;
public rank(string value, double score)
{
this.value = value;
this.score = score;
}
}
} }
} }