using Newtonsoft.Json; using StackExchange.Redis; namespace Server.System { public class Redis { ConnectionMultiplexer redis; IDatabase db; bool local = false; Dictionary stringType; Dictionary> listType; Dictionary> zType; Dictionary> hashType; public Redis(string host = "127.0.0.1", int port = 6379) { if(host == "localhost") { local = true; stringType = new Dictionary(); listType = new Dictionary>(); zType = new Dictionary>(); hashType = new Dictionary>(); } else { redis = ConnectionMultiplexer.Connect($"{host}:{port}"); db = redis.GetDatabase(); } test(); } public void test() { SetString("test", "key1"); Console.WriteLine("123123"); Console.WriteLine(GetString("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(params string[] keys) { if (local) return JsonConvert.DeserializeObject(stringType[KeySet(keys)]); else return JsonConvert.DeserializeObject(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 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(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; } } } }