From bfd4fd8e4a05a681ec10a47992294cf752a764c4 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期一, 02 三月 2026 15:10:58 +0800
Subject: [PATCH] 添加Redis服务与缓存增强
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/MemoryCacheService.cs | 75 +++++++++++++++++++++++++++++++++++++
1 files changed, 75 insertions(+), 0 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/MemoryCacheService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/MemoryCacheService.cs
index ce7a585..5f6d4ef 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/MemoryCacheService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/MemoryCacheService.cs
@@ -144,5 +144,80 @@
keys.ToList().ForEach(item => _cache.Remove(item));
}
+
+ public bool TryAdd(string key, string value, int expireSeconds = -1)
+ {
+ if (Exists(key)) return false;
+ return Add(key, value, expireSeconds);
+ }
+
+ public bool TryAdd<T>(string key, T value, int expireSeconds = -1) where T : class
+ {
+ if (Exists(key)) return false;
+ return AddObject(key, value, expireSeconds);
+ }
+
+ public bool TryGetValue(string key, out string? value)
+ {
+ value = _cache.Get(key)?.ToString();
+ return value != null;
+ }
+
+ public bool TryGetValue<T>(string key, out T? value) where T : class
+ {
+ if (_cache.TryGetValue(key, out object? obj) && obj != null)
+ {
+ value = obj as T ?? JsonConvert.DeserializeObject<T>(obj.ToString() ?? "");
+ return value != null;
+ }
+ value = default;
+ return false;
+ }
+
+ public bool TryRemove(string key, out string? value)
+ {
+ value = _cache.Get(key)?.ToString();
+ if (value == null) return false;
+ _cache.Remove(key);
+ return true;
+ }
+
+ public bool TryUpdate(string key, string newValue, int expireSeconds = -1)
+ {
+ if (!Exists(key)) return false;
+ Remove(key);
+ Add(key, newValue, expireSeconds);
+ return true;
+ }
+
+ public string GetOrAdd(string key, string value, int expireSeconds = -1)
+ {
+ var existing = _cache.Get(key)?.ToString();
+ if (existing != null) return existing;
+ Add(key, value, expireSeconds);
+ return value;
+ }
+
+ public string GetOrAdd(string key, Func<string, string> valueFactory, int expireSeconds = -1)
+ {
+ var existing = _cache.Get(key)?.ToString();
+ if (existing != null) return existing;
+ var value = valueFactory(key);
+ Add(key, value, expireSeconds);
+ return value;
+ }
+
+ public T GetOrAdd<T>(string key, Func<string, T> valueFactory, int expireSeconds = -1) where T : class
+ {
+ if (_cache.TryGetValue(key, out object? obj) && obj != null)
+ {
+ if (obj is T t) return t;
+ var deserialized = JsonConvert.DeserializeObject<T>(obj.ToString() ?? "");
+ if (deserialized != null) return deserialized;
+ }
+ var value = valueFactory(key);
+ AddObject(key, value, expireSeconds);
+ return value;
+ }
}
}
--
Gitblit v1.9.3